在后台运行PHPExcel作业

时间:2014-02-19 00:35:23

标签: php phpexcel background-process

我正在尝试将大量数据从数据库导出到Excel文件中。我的方法问题是它花了太长时间,脚本最终超时。

我一直在考虑在后台运行我的脚本的方法,但由于我希望我的代码尽可能灵活,我宁愿避免使用exec(),这通常在共享托管环境中被禁用,并至少支持PHP 5.2+。我一直试图通过PHP cURL运行我的脚本,但是这样的解决方案看起来并不是很优雅。

我不确定在这一点上我是否应该提供任何代码(我只是测试任何可能的解决方案,所以我写的所有内容都非常原始)因为我只是想找个人指出正确的方向 - 我我愿意做点读书。

非常感谢你的帮助:)

1 个答案:

答案 0 :(得分:2)

该过程将继续在Apache中运行,但这是一个便携式解决方案,如果需要,可以通过浏览器的AJAX请求轻松启动。

http://quickshiftin.com/blog/2011/04/non-blocking-web-service-processing-in-php/

<?php
// this script can run forever
set_time_limit(0);
 
// tell the client the request has finished processing
header('Location: index.php');  // redirect (optional)
header('Status: 200');          // status code
header('Connection: close');    // disconnect
 
// clear ob stack 
@ob_end_clean();
 
// continue processing once client disconnects
ignore_user_abort();
 
ob_start();
/* ------------------------------------------*/
/* Message you'll send to client goes here ..*/
/* ------------------------------------------*/
$iSize = ob_get_length();
header("Content-Length: $iSize");
 
// if the session needs to be closed, persist it
// before closing the connection to avoid race
// conditions in the case of a redirect above
session_write_close();
 
// send the response payload to the client
@ob_end_flush();
flush();
 
/* ------------------------------------------*/
/* PHP Excel Job goes here ...               */