在后台运行PHPExcel作业

在后台运行PHPExcel作业,php,phpexcel,background-process,Php,Phpexcel,Background Process,我正在尝试将大量数据从数据库导出到Excel文件中。我的方法学的问题是它花费的时间太长,脚本最终超时 我一直在考虑一种在后台运行脚本的方法,但由于我希望我的代码尽可能灵活,我宁愿避免使用exec(),这在共享托管环境中经常被禁用,并且至少支持PHP5.2+。我一直试图通过PHP cURL运行我的脚本,但是这种解决方案似乎不是很优雅 我不确定在这一点上我是否应该提供任何代码(我只是测试任何可能的解决方案,所以我写的所有东西都是原始的),因为我只想找人给我指出正确的方向——我愿意做我的阅读 非常感谢

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

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

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


非常感谢您的帮助:)

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


Gearman,但不是所有共享主机都支持它,也不是所有共享主机都支持很多东西。你只要详细说明要求就行了。我会坚持使用exec(),我知道你来自哪里,但我的主要目标之一是灵活性和兼容性。我可以考虑你的输入作为我的最后一个选择,谢谢:这看起来是一个明智的方法…我要尝试一下,看看如何将它纳入我的工作流程。谢谢@finferflu您是否找到了解决方案。我有相同的要求。如果您有用于运行导出大型数据的后台任务的代码,请与我共享。@Sanj,很抱歉,这是很久以前的事了,直到今天收到您的评论通知,我才想起这个问题。如果我遇到我的解决方案,我会把它贴在这里。@Sanj你可能想看看排队技术,比如等人。
<?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 ...               */