2015-06-18 2 views
2

У меня есть сценарий, который создает документ PDF и отправляется на печать. Бывает, что мне нужно подождать, пока документ будет создан, проверьте его и недавно отправили для печати.Как заставить PHP ждать, пока PDF не будет создан для печати?

define('TIKET_DIR', public_path('temp/')); 
    $token = sha1(microtime().'tk'); 
    $pdfPath = TIKET_DIR.$token.'.pdf';  
    $html2pdf = new HTML2PDF('V', array('72', '110'), 'es', true, 'UTF-8', 0); 
    $html2pdf->WriteHTML($html); 
    $html2pdf->Output($pdfPath, 'F'); 
    $cmd = "lpr -P".$ococina->impresora." "; 
    $cmd .= $pdfPath; 
    $response = shell_exec($cmd); 

Переменная $ html динамически создается и может задерживаться. Обычно документ PDF напечатан, но иногда он не печатается, и я думаю, что это происходит, потому что команда lpr выполняется без того, чтобы документ PDF был готов. Я использую LEMP на Ubuntu с сервером печати CUPS. Я должен отключить и включить все принтеры, подключенные к компьютеру, и только документ PDF, ранее отправленный печатью.

Заранее спасибо.

+0

Функция Php блокирует –

+0

, и если да, то почему иногда принтер останавливается? У меня есть 3 термопринтера Epson TM - T20II, подключенных одновременно к серверу и клиенту. Это могут быть перегруженные процессы? Ошибка драйвера? –

ответ

1

Ну, PHP имеет функцию сна:

int sleep (int $seconds) 

(см: http://php.net/manual/en/function.sleep.php) Но это не хороший способ решения проблем. Также вы можете запустить максимальное время выполнения, как определено вашим веб-сервером, или ваши настройки PHP.

Возможно, рассмотрите асинхронные решения? Например, информация о процессе, необходимая для pdf и электронной почты после этого

+0

Его программное обеспечение для ресторанов, где термопринтеры получают заказы. Я постараюсь спать, но не идеально. –

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