在后台运行php文件

时间:2013-11-11 06:13:36

标签: php sql command-line fork daemon

我想在后台运行代码..我想下载大量的报告,这需要花费大量的时间..我已经通过几乎所有的谷歌网站,但仍然无法找到答案..米其实卡住不能进一步..

用于在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";
  }




?>

我希望这个excel代码在后台运行。任何帮助将不胜感激

1 个答案:

答案 0 :(得分:0)

要在后台运行PHP文件,您必须将代码放在一个文件中,并调用PHP解释器在后台运行它。在* nix服务器上,使用exec( '/usr/bin/php -f path/to/your/script > /dev/null &' );。检查服务器上PHP解释器的路径,它可能不是/usr/bin/php,请在必要时询问您的托管服务提供商。在Windows服务器上,使用pclose( popen( 'start /b C:\php\php.exe -f path\to\your\script' ) );(再次假设php.exe在C:\php中)。

然而,后台进程无法向用户的浏览器输出任何内容,因为它自己运行。实现所需要的一种方法是将PHP结果输出到文件中,在作业完成时设置一些标志,在另一个脚本中检查结果是否准备就绪,并为用户提供文件链接。