Работает всё на винде Это парсер доменов по списку, который получает метаданные с сайтов, типа многопоточный. Есть главный скрипт который берёт конкретный домен из списка и запускает свободный трэд с нужными параметрами, через popen в цикле. Работает всё вроде неплохо, но переодически запущенные скрипты не закрываются в процессах... Но далеко не всегда, прошу заметить. Сами скрипты не виснут, это проверено, никаких бесконечных циклов там нет. Все скрипты выполняются до конца. Никак не могу решить проблему... Это глюк винды? вот кусок, запускающий процессы: while (!feof($handle)) { for($i = 1; $i <= $max_threads; $i++) { // проверяем нет ли для текущего треда файла-флага что он уже работает if (!file_exists($work_dir."/thread".$i.".run")) { // если нет, то читаем строку и запускаем $domain = trim(fgets($handle)); $h = popen('start /b '.$php_dir.'/php C:/PHP_Parser/domain_list_parser_thread.php '.$i.' '.$domain.' '.$cat_id.' >> '.$work_dir.'thread'.$i.'.log', 'w'); pclose($h); } } $sfp = fopen($work_marker, "w"); // сохраним текущую позицию в файле fputs($sfp, ftell($handle)); fclose($sfp); usleep($pause); // тормознём на пол-секунды, всё равно быстрее треды не отработают. }
В общем это действительно какой-то глюк винды... Поставил на соседний сервак, причём тоже 2к3, там всё в порядке.