在后台运行php文件
我想在后台运行代码..我想在下载需要大量时间的大型报告时运行此代码。。我浏览了几乎所有的谷歌网站,但仍然找不到答案。。I’我真的被卡住了,不能再往前走了 用于在xls中下载报告的代码是在后台运行php文件,php,sql,command-line,fork,daemon,Php,Sql,Command Line,Fork,Daemon,我想在后台运行代码..我想在下载需要大量时间的大型报告时运行此代码。。我浏览了几乎所有的谷歌网站,但仍然找不到答案。。I’我真的被卡住了,不能再往前走了 用于在xls中下载报告的代码是 <?php include '../dbConnect.php'; $from1='2013-06-01'; $to1='2013-07-01'; $today=date('Y-m-d H:i:s'); $fileName='Outbound_download'.$today.'.xls'; ignore
<?php
include '../dbConnect.php';
$from1='2013-06-01';
$to1='2013-07-01';
$today=date('Y-m-d H:i:s');
$fileName='Outbound_download'.$today.'.xls';
ignore_user_abort(true);
set_time_limit(0);
//echo 'Testing connection handling in PHP';
header("Content-type: application/vnd.ms-excel");
header("Content-Disposition: attachment; filename=$fileName");
$flag = false;
$query="";
$query = "SELECT pendingCustomer.ackNo AS RAF, pendingCustomer.serialNo AS Serial_No, pendingCustomer.phoneNo AS Phone,pendingCustomer.repairStatus as ArrivalStatus,tblRepairQueue.repairStatus as CurrentStatus, pendingCustomer.savedAt AS UpdateRecievedAt, pendingCustomer.updated as Updated, pendingCustomer.status as Status
FROM pendingCustomer,tblRepairQueue
WHERE pendingCustomer.status!='' AND DATE(pendingCustomer.savedAt) BETWEEN '".$from1."' AND '".$to1."' and pendingCustomer.ackNo=tblRepairQueue.ackNo";
$result = mysql_query($query) or die('Error, query failed');
while($row =mysql_fetch_assoc($result)) {
if(!$flag) {
// display field/column names as first row
echo implode("\t", array_keys($row)) ."\r\n";
$flag = true;
}
echo implode("\t", array_values($row)) . "\r\n";
}
?>
要在后台运行PHP文件,必须将代码放在一个文件中,并调用PHP解释器在后台运行它。在*nix服务器上,使用exec('/usr/bin/php-f path/to/your/script>/dev/null&')代码>。检查服务器上PHP解释器的路径,它可能不是/usr/bin/PHP
,如有必要,请询问主机提供商。在Windows服务器上,使用pclose(popen('start/bc:\php\php.exe-f path\to\your\script')
(同样,假设php.exe位于C:\php
)
但是,后台进程无法向用户的浏览器输出任何内容,因为它是独立运行的。完成所需任务的一种方法是将PHP结果输出到一个文件中,在完成任务时设置一些标志,在另一个脚本中,检查结果是否准备好,并为用户提供文件链接。在共享主机上祝您好运。尝试和测试:)取决于主机。@keyboardSmasher将/usr/bin/php保持不变always@namratha不可以。您可以尝试$path\u to\u php=trim(shell\u exec(“哪个php”)
或依赖于PHP\u BINDIR
常量。但是要小心!这两个都不能在Windows主机上运行。@HeikkiU我不明白你的意思。。因为我对此一无所知。。你能给出代码吗?为什么不将excel生成的状态持久化到数据库表中?顺便说一句,0的时间限制是相当危险的。