在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壳

脚本需要:

  1. 从该队列表中读取所有未处理的作业
  2. foreach,查询所有必要的数据做“导出”
  3. 更新状态为“处理”
  4. …并处理它们,也许只有3个或更小的限制。
  5. 保存到你的Excel文件,并更新状态栏“完整”,“错误”,等等,以防止下次被查询。
  6. 给收件人发电子邮件(我也会在这个地方记下这个日志)

最后,添加到/ crontab运行它每10分钟或任何频率是适当的,如下所示:* / 10 * * * * root cd / var / www / html / project / app&Console / cake exporter >> / var /login/ ExporterShell.log