ホームページ > バックエンド開発 > PHPチュートリアル > フォーム送信後に長時間実行される PHP スクリプトをバックグラウンドで実行するにはどうすればよいですか?

フォーム送信後に長時間実行される PHP スクリプトをバックグラウンドで実行するにはどうすればよいですか?

Mary-Kate Olsen
リリース: 2024-12-03 02:22:09
オリジナル
335 人が閲覧しました

How Can I Run a Long-Running PHP Script in the Background After a Form Submission?

フォーム送信後にバックグラウンドで PHP スクリプトを実行する方法

問題のシナリオ

送信された情報を処理し、その情報をデータベースを管理し、購読者のリストに通知を送信します。ただし、サブスクライバーの数 (約 150) により、このプロセスにはかなりの時間がかかります (1 分以上)。これにより、ユーザーは遅延と潜在的な問題を経験することになります。

  • ユーザーはフォームを繰り返し送信し、送信が重複したり失敗したりする可能性があります。
  • ユーザーがページまたはブラウザを途中で閉じてしまう可能性があり、ブラウザが切断されている間、サーバーはスクリプトの実行を継続します。

解決策: 電子メールを分離する通知

これに対処するには、スクリプトの電子メール通知部分を個別のファイルに分離する必要があります。ただし、このファイルをバックグラウンド タスクとして実行することは、ユーザーの操作の必要性をなくすために不可欠です。

バックグラウンドでの PHP スクリプトの実行

PHP スクリプトをバックグラウンド サービスとして実行するには、外部プロセスは、exec またはshell_exec のいずれかを使用して呼び出す必要があります。

使用shell_exec

shell_exec を使用すると、通知プロセスのログを記録できます。次のコマンドは、目的の機能を実現します。

shell_exec("/path/to/php /path/to/send_notifications.php '".$post_id."' 'alert' >> /path/to/alert_log/paging.log &");
ログイン後にコピー

コマンドの末尾の & 文字は、プロセスがバックグラウンドで実行される必要があることを示します。

補足事項

  • スクリプト パスの後の追加の変数 (一重引用符で囲まれた) は、バックグラウンド内の $_SERVER['argv'] 配列を通じてアクセスできます。
  • バックグラウンド スクリプトの出力は、>> を使用してログ ファイルに追加されます。演算子。

以上がフォーム送信後に長時間実行される PHP スクリプトをバックグラウンドで実行するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート