この記事では、主に PHP 非同期実行スクリプトの紹介を紹介します。一定の参考価値があります。今、みんなに共有しています。困っている友達は参考にしてください。
ここで言う非同期実行とは、 PHP スクリプト バックグラウンドで特定の操作を実行するスクリプトを一時停止します。メイン スクリプトが終了した後、一時停止されたスクリプトは実行を継続できます。たとえば、特定の時間のかかる操作や並列実行できる操作を実行するために、PHP を非同期で実行できます。メイン スクリプトとサブスクリプト間の通信は、外部ファイルまたは memcached を介して行うことができます。原則として、exec または system を通じて外部コマンドを実行します。注: この記事では Linux 環境について説明します。
Linux でスクリプトをバックグラウンドで実行するには、コマンドの末尾に「&」記号を追加します。場合によってはこれでは不十分で、nohup コマンドを使用する必要があります。nohup の場合は、 http://www.netingcn.com/linux-nohup.html を参照してください。
CLI 環境と Web 環境で実行される操作は同じではありません。まず CLI 環境について説明します。ここで nohup と & を使用し、出力を指定する必要があります。結果を出力したくない場合は、出力を /dev/null に送信できます。テストしてみましょう ディレクトリ内に main.php、sub1.php、sub2.php があり、sub1 と sub2 の内容は同じで、スリープ機能が一定時間停止したとします。コードは以下の通りです: 上記ファイルの
#main.php をメインスクリプトとして使用し、コマンドラインで php main.php を実行します。 main.php スクリプトがすぐに実行されます。完了して終了します。 ps aux | grep sub コマンドを使用してプロセスを検索すると、バックグラウンドで上記の 2 つのサブスクリプトが表示され、サブスクリプトが正常に一時停止されたことがわかります。
Web 環境では、PHP スクリプトの実行は Web サーバーによって起動される CGI プロセスによって処理され、スクリプトが終了しない限り常に CGI プロセスを占有します。プロセスが占有されている場合、新しいリクエストを処理できません。したがって、時間がかかる可能性のあるスクリプトには、非同期アプローチを使用できます。サブスクリプトを開始する方法は CLI に似ており、& を使用して出力を指定する必要があります (/dev/null に出力する必要があります)。ただし、nohup は使用できません。例:
#ブラウザでスクリプトファイルにアクセスすると、ブラウザでの応答が完了していることがわかります。同時に ps コマンドを使用して、背景を表示すると、sub1 と sub2 のスクリプトが表示されます。
上記の例では、php コマンドが PATH にない場合は、コマンドの完全なパスを指定する必要があることに注意してください。特に Web ではフルパスを使用することをお勧めします。
上記がこの記事の全内容です。皆様の学習に少しでもお役に立てれば幸いです。その他の関連コンテンツについては、PHP 中国語 Web サイトをご覧ください。
関連する推奨事項:
以上がPHP非同期実行スクリプトの紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。