我正在尝试将大量数据从数据库导出到Excel文件中。我的方法问题是它花了太长时间,脚本最终超时。
我一直在考虑在后台运行我的脚本的方法,但由于我希望我的代码尽可能灵活,我宁愿避免使用exec()
,这通常在共享托管环境中被禁用,并至少支持PHP 5.2+。我一直试图通过PHP cURL运行我的脚本,但是这样的解决方案看起来并不是很优雅。
我不确定在这一点上我是否应该提供任何代码(我只是测试任何可能的解决方案,所以我写的所有内容都非常原始)因为我只是想找个人指出正确的方向 - 我我愿意做点读书。
非常感谢你的帮助:)
答案 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 ... */