在后台运行PHP进程,完成后发送邮件


run php process in background, send email when finished

我正在编写一个脚本,允许用户从远程存储库下载虚拟机映像。映像必须从远程存储库(a)下载到本地服务器(b),然后用户可以通过url链接从该本地服务器(b)下载映像。这是通过调用带有url端点的api来实现的。

我的问题是,图像从"a"机器传输到"b"机器可能需要一段时间。有没有办法让下载过程在后台执行。当图像传输完成后,用户会收到一封包含文件链接的电子邮件。

否则,在max_execution_time设置允许的时间内,用户将只是坐在旋转页面上。

我正在寻找这个网站作为参考,但它不是特别有用。

编辑:我正在运行一个LAMP设置

你可能想通过beanstalk来启动一个worker。

http://kr.github.io/beanstalkd/

发送包含下载链接和要发送到的电子邮件的消息。可以在发送消息时按需启动worker,并自动启动下载。下载完成后,worker将发送电子邮件。

可以在这里找到与beanstalk接口的PHP库:

https://github.com/pda/pheanstalk

豆瓣

beanstald是一个守护进程,用于异步处理正在运行的作业,以便您的用户在等待任务完成时不会挂起。它是用Ruby编写的(我想),但是有许多客户端库可以与它交互。

Pheanstalk

Pheanstalk是用于与beanstalk集成的PHP库。您可以定义Job类,然后使用此API提交这些作业以供处理。

大多数主流框架都支持这样的东西。