あなたはカールを使用して、それを実行できるようにWebリソースとしてスクリプトをロードすることによって、それを実現できました。 そのスクリプトは、要求が同じサーバから来たかどうかをチェックすることができ、公衆から保護する必要がある場合:スクリプトはに多くの時間を要するので、もし
if($_SERVER['SERVER_NAME'] != 'localhost'
|| $_SERVER['REMOTE_ADDR'] != '127.0.0.1'
|| stripos($_SERVER['HTTP_USER_AGENT'], 'wget')===false
)
{
// Access Denied!!
die();
}
は、カールとの非同期要求を行うようにしてください実行するか、元のユーザーの要求をハングしないでください(curl_setopt($handle, CURLOPT_HEADER, false);
したがって、スクリプトを実行する必要があることが分かっているページからの計画で、スクリプトへのHTTPリクエストを開始します。カールライブラリー):
$handle = curl_init();
curl_setopt($handle, CURLOPT_URL, 'http://localhost/your_script.php');
curl_setopt($handle, CURLOPT_HEADER, false);
curl_exec($handle);
curl_close($handle);
スクリプトで、上記のスクリプトを使用して、現在のサーバーからの要求を保護し、そのジョブを実行します。
更新この質問で述べたように
:
// Send the response to the client
header('Connection: Close');
// Do the background job: just don't output anything!
更新II
私の確認:あなたはスクリプトとして接続が実行されて閉じるように、このヘッダを送信することができ、スクリプトジョブでsending a non-blocking HTTP POST request 自分自身の答え、私はcurl_setopt($handle, CURLOPT_HEADER, false);
が非同期要求を作成しないことを確認しました。私はまだそれを行う方法を見つけていない。
あなたは 'システム()'や 'もしくはshell_execを()'てみましたか? – Alex
はい、無効になっています。そして、バックチックも。 – ONOZ
私はバックグラウンドプロセスを実行するための解決策を見つけることができません – Alex