2つのPHPスクリプトがあります。これらをスクリプトAとスクリプトBと呼びます。ユーザーが特定の操作を行うと、スクリプトAが実行を開始します。スクリプトAはバックグラウンドでスクリプトBを実行する必要があります。したがって、スクリプトBの実行中にスクリプトAの結果が返されます。スクリプトA内でこれを行うことができます:exec('scriptB.php &')
ただし、共有ホスティングを使用してexec
いるため、許可されていません。また、スクリプトBを実行する必要があるため、Ajaxソリューション(クライアント側で両方のスクリプトを開始する)は機能しません。ユーザーにスクリプトの実行を悪意を持って停止させることはできません。
シェルコマンドやAjaxの使用を伴わない解決策はありますか?
前もって感謝します!
私はこの方法を使用することになりました:http://w-shadow.com/blog/2007/10/16/how-to-run-a-php-script-in-the-background/
function backgroundPost($url){
$parts=parse_url($url);
$fp = fsockopen($parts['host'],
isset($parts['port'])?$parts['port']:80,
$errno, $errstr, 30);
if (!$fp) {
return false;
} else {
$out = "POST ".$parts['path']." HTTP/1.1\r\n";
$out.= "Host: ".$parts['host']."\r\n";
$out.= "Content-Type: application/x-www-form-urlencoded\r\n";
$out.= "Content-Length: ".strlen($parts['query'])."\r\n";
$out.= "Connection: Close\r\n\r\n";
if (isset($parts['query'])) $out.= $parts['query'];
fwrite($fp, $out);
fclose($fp);
return true;
}
}
//Example of use
backgroundPost('http://example.com/slow.php?file='.urlencode('some file.dat'));
レイチェル、助けてくれてありがとう。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加