2013-11-11 3 views
1

Я хочу запустить код в фоновом режиме. Я хочу это при загрузке огромного отчета, который занимает много времени .. Я прошел почти все сайты Google, но все еще не смог найти ответ. . м на самом деле застряли, не в состоянии двигаться дальше ..для запуска php-файла в фоновом режиме

код м, используя для загрузки отчета в формате 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"; 
    } 




?> 

я хочу это первенствует код для запуска в фоновом режиме. любая помощь будет оценена

+0

Почему бы не сохранить статус генерации excel в таблице базы данных? BTW, ограничение по времени 0 довольно опасно. – keyboardSmasher

ответ

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 в файл, установить флаг во время выполнения задания, а в другом скрипте проверить, готовы ли результаты и дать ссылку на файл для пользователя.

+0

Удачи вам в том, что на общем хосте. – keyboardSmasher

+0

Tried & tested :) Зависит от хоста. –

+0

@keyboardSmasher будет/usr/bin/php быть постоянным всегда – namratha

Смежные вопросы