首页 >后端开发 >php教程 >提交表单后如何在后台运行长时间运行的 PHP 脚本?

提交表单后如何在后台运行长时间运行的 PHP 脚本?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-12-03 02:22:09330浏览

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

如何在提交表单后在后台运行 PHP 脚本

问题场景

考虑一个处理提交信息的表单,将其插入到数据库,并向订阅者列表发送通知。但是,由于订阅者数量众多(大约 150 个),该过程需要大量时间(超过一分钟)。这会导致用户遇到延迟和潜在问题:

  • 用户可能会重复提交表单,导致重复提交或提交失败。
  • 用户可能会过早关闭页面或浏览器,导致服务器在浏览器断开连接时继续运行脚本。

解决方案:分离电子邮件通知

为了解决这个问题,脚本的电子邮件通知部分应分离到一个不同的文件中。但是,将此文件作为后台任务运行对于消除用户的交互需求至关重要。

在后台运行 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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn