Проблема с именованными каналами, ломающими php / windows - PullRequest
1 голос
/ 25 июня 2011

У меня есть именованный канал, читаемый программой на python, установленной как служба в Windows 2008 для печати данных из базы данных. Код (php), который пишет в канал, выглядит следующим образом. ($ cmd - переданная командная строка).

$pipeName = "\\\\.\\pipe\\printerpipe";
@trigger_error("");
@$pipe = fopen($pipeName,'rb+');
$a = error_get_last();
if ($a['message'] == '') {
    fwrite($pipe,$cmd);
    $ans = fread($pipe,256);
} else {
    print error message "service not loaded"        
}

Пользовательского обработчика ошибок не существует.

До сегодняшнего дня это работало на моей тестовой машине (Window7) и на рабочем сервере. Сегодня он напечатал три отчета, затем сообщил об ошибке службы не загружен, а затем напечатал в 4 раза больше! Я сомневаюсь, что система была занята или перегружена - у меня один пользователь, отчет крошечный (большинство отчетов - одна страница), и печать буферизуется. Большинство отчетов появляются на принтере, так как ответ на запрос обрабатывается браузером.

Кроме того, связь между моим кодом Python и metworked принтером прерывается каждую ночь, поэтому мне приходится перезапускать сервис каждое утро. Может кто-нибудь подтвердить, что это связано с выключением принтера, или предложить, как восстановить связь, кроме перезапуска службы печати?

Мне нужно сделать службу надежной, и я не знаю, как действовать дальше. Идеи и советы с благодарностью получены.

Это может быть этот код - я не понимаю обработку ошибок, и код был скопирован из поста в интернете.

...