在cakephp中创buildasynchronous任务
我需要在cakephp中使用PHPExcel在excel文件中导出大量数据。 我的代码完美适用于小范围(最大约1000条logging),但是它的数据大小超过1000条logging,然后nginx引擎说502坏的网关错误。 因为执行时间太高。
现在我喜欢以asynchronous方式完成这项任务。 一旦Excel生成完成,那么我需要通过电子邮件与下载链接通知pipe理员。
我的页面链接
创build一个新的模型,该模型将performance为出口的队列。 将所需的信息保存在一行中,如:id,request,filename,status,created,modified
然后在app / Console / Command / ExporterShell.php中创build一个Shell,并使用set_time_limit()设置较高的PHP执行时间。 ref: CakePHP壳
脚本需要:
- 从该队列表中读取所有未处理的作业
- foreach,查询所有必要的数据做“导出”
- 更新状态为“处理”
- …并处理它们,也许只有3个或更小的限制。
- 保存到你的Excel文件,并更新状态栏“完整”,“错误”,等等,以防止下次被查询。
- 给收件人发电子邮件(我也会在这个地方记下这个日志)
最后,添加到/ crontab运行它每10分钟或任何频率是适当的,如下所示:* / 10 * * * * root cd / var / www / html / project / app&Console / cake exporter >> / var /login/ ExporterShell.log