Webページをスクレイピングするために広範なcurlリクエストを行うphpプログラムがあります。最大で 100 万件のリクエストになる可能性があります。スクリプトの実行を完全に停止する必要があります。ブラウザで停止しましたが、まだリクエストを処理しています。どうすれば永久に停止できますか?
4 に答える
リクエストを強制終了しているだけです。今のところ停止するには、apache を停止する必要があります。将来的には、プロセスがキル スイッチ (ファイルの存在など) を探し、見つかった場合は処理を停止するように再設計します。長時間実行されるプロセスをphpスクリプトに詰め込んでいるように聞こえますが、通常のシステムプロセスとして直接実行してみませんか?
通常のランプ スタックを実行していると仮定すると、必要に応じてマシンに SSH で接続し、Apache を再起動します。
PHP で実際に長時間実行するタスクを実行する場合は、cron を使用してそれらを実行するか、ある種のタスク キューを実装することを検討することをお勧めします。一般に、この種のものをブラウザのリクエストから発火させるのは、非常に悪い考えです。
アパッチを再起動します。XAMP を使用している場合は、コントロール パネルから停止および開始します。
そうでない場合、Windows では、タスク マネージャーに移動してapache.exe
プロセスを終了します。その後、もう一度開始します。
なぜ誰もがあなたがApacheを実行していると思い込んでいるのですか?Web サーバーを再起動すると、うまくいくはずです。将来的には、(例) のようなキル スイッチを使用できます。
while(!file_exists('stop.txt'))
次に、停止する準備ができたら、そのファイルを作成します ^.^ または、終了する前に反復回数を有限にしてください。