3

別の PHP ファイルからオンデマンドで開始できるバックグラウンド PHP プロセスを作成できることはわかっています。

$command = "/usr/bin/php5 -f script.php";
exec( "$command > /dev/null 2>&1 &", $arrOutput);

ただし、このソリューションは、PHP がmod_phpとして実行されている場合にのみ機能します。

FastCGIで同じことを行う方法はありますか?

FastCGI では、FastCGI によってプロセスが何度も開始および終了されるようですが、修正した経験のある人はいますか?

4

1 に答える 1

0

cron ジョブをセットアップできますか? そうでない場合は、PHP 内で呼び出す必要があります。curl を使用して exec() などにアクセスせずに、クロスプラットフォームの方法でエミュレートしたことがあります (信じられないかもしれませんが)。

.php スクリプトを作成して公開し、これを一番上に追加します。

if (isset($_POST['key']) == false || $_POST['key'] != 'your secret key') {
    die(); //request not allowed
}

次に、他の PHP ファイルから、安全な (https) curl 接続を作成し、それに秘密鍵を POST して、curl のタイムアウトをたとえば 5 秒に設定します (要求ページから http close connection ヘッダーを送信することもできます)。リクエストの完了に時間がかかる場合、スクリプトの呼び出しはフリーズしません。この場合は 30 秒です。

これにより次のことが行われます: 1. curl はページに安全にアクセスします (ブラウザでのアクセスを停止します) 2. curl は 5 秒間待ってから接続を閉じます (ただし、両方の php スクリプトは実行されます)

また、OS の内部やシェルなどに関係なく互換性があります。必要に応じてタイムアウトなどを微調整することもできます。

素晴らしい解決策ではありませんが、十分に機能することを願っています。

于 2012-10-25T18:41:53.477 に答える