Я работал над симуляцией многозадачности в PHP, используя popen
, Идея состоит в том, что я помещаю часть кода, которая должна выполняться несколько раз одновременно, в другой файл, запускаю этот файл с помощью popen
каждый раз, когда мне нужно, чтобы он запускался, вводил входные данные с помощью аргументов командной строки, а затем перебирал дескрипторы файлов, пока все они не вернут свои данные.
В рамках процесса отладки я запускал это приложение около ста раз, каждый раз вызывая popen
около 50 раз. Обычно ресурс pclose
в конце, но иногда ошибка или exit
ударил и ресурс остается открытым в конце сценария.
Почему-то около часа назад popen
внезапно перестал работать при попытке открыть этот файл. Я также заметил, что если я уменьшу popen
к одному и echo
из ручки, вместо того, чтобы начать нумерацию в Resource id #2
(У меня также открыто соединение с базой данных), ресурсы начинаются с Resource id #10
, Для меня это говорит о том, что, возможно, где-то есть утечка дескрипторов.
Как закрыть эти дескрипторы, если у меня больше нет переменной, ссылающейся на них?
Задача ещё не решена.
Других решений пока нет …