相关疑难解决方法(0)

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

问题
我有一个表单,在提交时,将运行基本代码来处理提交的信息并将其插入数据库以显示在通知网站上.另外,我有一个已经注册通过电子邮件和短信接收这些通知的人员列表.这个列表是微不足道的(只推动了大约150个),但这足以导致需要花费一分钟才能在整个订阅者表中循环并发送150多封电子邮件.(由于大量的电子邮件策略,电子邮件按照我们的电子邮件服务器的系统管理员的要求单独发送.)

在此期间,发布提醒的个人将在表格的最后一页上停留近一分钟而没有任何正面强化他们的通知被发布.这导致了其他潜在的问题,所有这些问题都有可能我认为不太理想的解决方案.

  1. 首先,海报可能认为服务器滞后并再次单击"提交"按钮,导致脚本重新开始或运行两次.我可以通过使用JavaScript来禁用按钮并将文本替换为"正在处理..."之类的内容来解决这个问题,但这并不理想,因为用户在脚本执行的长度上仍会卡在页面上.(另外,如果禁用JavaScript,则此问题仍然存在.)

  2. 其次,海报可能会在提交表单后过早关闭标签页或浏览器.该脚本将继续在服务器上运行,直到它尝试写回浏览器,但是如果用户随后浏览到我们域中的任何页面(当脚本仍在运行时),则浏览器会挂起加载页面,直到脚本结束.(仅当浏览器的选项卡或窗口关闭而不是整个浏览器应用程序时才会发生这种情况.)但这仍然不太理想.

(可能)解决方案
我已经决定将脚本的"电子邮件"部分分解为一个单独的文件,我可以在发布通知后调用它.我最初想到在通知成功发布后将其放在确认页面上.但是,用户不会知道此脚本正在运行,并且任何异常都不会对他们显而易见; 这个脚本不会失败.

但是,如果我可以将此脚本作为后台进程运行,该怎么办?所以,我的问题是:我如何执行PHP脚本作为后台服务触发并完全独立于用户在表单级别完成的操作?

编辑:不能是cron'ed.它必须在提交表单的瞬间运行.这些是高优先级通知.此外,运行我们服务器的系统管理员不允许运行任何超过5分钟的crons.

php scripting background

97
推荐指数
6
解决办法
13万
查看次数

发送HTTP响应后继续执行PHP

如何让PHP 5.2(作为apache mod_php运行)向客户端发送完整的HTTP响应,然后继续执行操作一分钟?

长篇故事:

我有一个PHP脚本,必须执行一些长数据库请求并发送电子邮件,运行需要45到60秒.该脚本由我无法控制的应用程序调用.我需要应用程序报告从PHP脚本收到的任何错误消息(主要是无效的参数错误).

应用程序的超时延迟小于45秒(我不知道确切的值)因此将PHP脚本的每次执行都注册为错误.因此,我需要PHP尽可能快地将完整的HTTP响应发送到客户端(理想情况下,只要输入参数已经过验证),然后运行数据库和电子邮件处理.

我正在运行mod_php,所以pcntl_fork不可用.我可以通过将要处理的数据保存到数据库并运行实际过程来解决这个问题cron,但我正在寻找一个更短的解决方案.

php fork

62
推荐指数
6
解决办法
4万
查看次数

php离开页面后继续执行

我有一个简单的脚本,从1到5000计数一个for循环.它将输出实时刷新到浏览器并显示带%的进度条.

我拥有:如果我离开页面,进程将中断.如果我回来,它从0开始.

我想要实现的目标:如果我离开页面,过程将继续,如果我回来,它会显示正确的百分比.

示例:我运行该过程,它计数到54,我离开页面10秒,当我回来时它显示我140并继续冲洗.

可能吗?

php continue flush

2
推荐指数
1
解决办法
111
查看次数

标签 统计

php ×3

background ×1

continue ×1

flush ×1

fork ×1

scripting ×1