在后台运行php文件

在后台运行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

我想在后台运行代码..我想在下载需要大量时间的大型报告时运行此代码。。我浏览了几乎所有的谷歌网站,但仍然找不到答案。。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_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的时间限制是相当危险的。