1

これが私のコードです:

<?php
    require_once 'dbconnect.php';
    function execInBackground($cmd) { 
        if (substr(php_uname(), 0, 7) == "Windows"){ 
            pclose(popen("start /B ". $cmd, "r"));  
        } 
        else { 
            exec($cmd . " > /dev/null &");   
        } 
    } 

    if(isset($_GET['date'])){
        //CHECK LOCK
        $checkLock = "Select IS_FREE_LOCK('overnight') as `lock`;";
        $result = mysql_query($checkLock) or die(mysql_error());
        while($information = mysql_fetch_array($result)){
            if($information['lock'] == 0){
                die('Overnight is already running, please try again later.');
            }
        }
        execInBackground("php overnightQueries.php {$_GET['date']}");
        //echo "<pre>".print_r($output2, true)."</pre>";
        header('Refresh: 3; url=index.php');
        die('running queries...');
    }
    else {

        die('PLEASE SET DATE');

    }
?>

Windowsマシンを使用しています。

次の警告が表示されます。

警告: popen(start /B php eveningQueries.php 2011_08_12,r): No error in C:\inetpub\GTSA\runOvernight.php 行 5

と:

警告: pclose() は、パラメーター 1 がリソースであると想定し、5 行目の C:\inetpub\GTSA\runOvernight.php で指定されたブール値です

4

1 に答える 1

0
$handle = popen("start /B ". $cmd, "r");  
if ($handle === FALSE) {
   die("Unable to execute $cmd");
}
pclose($handle);

popen は、問題があった場合に false を返します。これをやみくもに pclose に渡すと、2 番目のエラーが発生します。

最初のエラーについては、PHP が環境のパスにあることを確認してください。php.exe への絶対パスを指定する必要がある場合があります。

于 2011-08-12T15:48:02.957 に答える