私は、zipファイルを生成している長期実行中のPHP 7.2のスクリプトを持っています。私は、zipファイルを構築するの進行状況を確認するためにループするAJAX呼び出しを使用します。2番目のスクリプトは、ロックされて表示され、最初のスクリプトが完全に終了するまで処理を開始しません。
実際には、2番目のスクリプトも、最初のスクリプトが完全に終了した後まで、私のindex.phpルーティングスクリプトの1行目にerror_logに()が印刷されません。
私の一番上index.php
のルータのスクリプト:
<?
error_log('top of index '.$_SERVER['REQUEST_URI']);
これは、私はちょうど、静的なイメージリソースを要求していた場合でも同様です。ライン1上のerror_log()はさえ長時間実行中のスクリプトが完全に終了した後まで印刷されません。
最初は、私は私がに実行していたと信じられ、ここで説明するように、セッションのロックが、彼らが提供しています解決策は、(呼び出し動作するようには思えないsession_write_close()
)、そして何か他のものは、2番目のスクリプトは1行目以前のようにロックされているために起こっている場合、私は思ったんだけど私は、セッションを開始しようとするとロックアップに反対しました。2番目のスクリプトは、AT ALLを開始していないようです。私は多分、サーバーが自動的に1行目の前にセッションを開始すると思ったが、私はチェックして、私のサーバーはsession.auto_start = 0を持っています。
私は設定する必要があり、いくつかのサーバ設定はありますか?
私は何をしないのですか?何が私が間違っているのでしょうか?
私は内蔵のPHPサーバとローカルホスト(マック)上でこれを実行していますよ。
php -c /usr/local/etc/php/7.2/php.ini -S 127.0.0.1:8080 index.php
以降PHP 7.4から、組み込みのサーバーがサポートする複数の労働者(フォーク()が利用可能であるプラットフォーム上)。このコミットを参照してください:https://github.com/php/php-src/commit/82effb3fc7bcab0efcc343b3e03355f5f2f663c9
これを使用するには、サーバーを起動する前にPHP_CLI_SERVER_WORKERS環境変数を追加します。例えば:
PHP_CLI_SERVER_WORKERS=10 php7.4 -S 127.0.0.1:7080 index.php
この機能を利用したい場合、私はあなたのPHP 7.2インストールをアップグレードをお勧めします。