在另一个脚本完成之前,调用另一个PHP脚本并将控制权返回给用户

时间:2011-02-24 10:45:35

标签: php email cron

我实际上是在尝试将其应用于发送电子邮件的脚本。发送电子邮件部分需要几秒钟,这太长了。我想要的是第一个脚本执行其操作并触发另一个脚本(发送电子邮件),但我希望第一个脚本将控制权返回给用户,而不必等待第二个脚本发送电子邮件。

我考虑的选项:
Cron Job:为此,我必须每隔2分钟就有一个cron工作。不可行!
PHP脚本激活一个完成后自动停用的cron作业:好的,但我该怎么做? PHP可以这样做吗?

4 个答案:

答案 0 :(得分:4)

您也可以调用shell并手动调用PHP文件。没有cron需要,也没有等待。

http://www.php.net/manual/en/function.exec.php

来自Notes部分

  

“如果程序以此启动   功能,以便继续   在后台运行,输出   该程序必须重定向到一个   文件或其他输出流。失败   这样做会导致PHP挂起,直到   程序的执行结束。“

答案 1 :(得分:1)

其他解决方案:

  • 当需要发送邮件时,您的脚本会在某处(DB /文件系统)放置一个令牌(令牌可能包含用于邮件生成的数据)
  • 一个守护进程(可以用php编写)在后台运行,寻找令牌并“吃掉”它们发送邮件

我使用这种解决方案很多......

答案 2 :(得分:1)

我正在使用jQuery和AJAX为PHP脚本做这样的事情需要很长时间。

答案 3 :(得分:0)

您想要使用的是 beanstalkd

详细信息: How can I get a list of all jobs in a beanstalk tube?

它允许你排队作业(做1,然后2,然后是3然后4)你甚至可以跨服务器分发这些任务(对于php作业是的!)。