Я пытаюсь получить некоторые данные через API, используя другой процесс, чтобы сделать все запросы одновременно.
Он работает нормально, но у меня много утечек памяти в скрипте (я использую сегмент общей памяти для хранения результатов, извлекаемых каждым процессом)
Код, который я использую для создания сегмента разделяемой памяти, выглядит следующим образом (я просто добавил минимальный код, полезный для понимания проблемы):
for ($i = 0; $i < 6; $i++)
{
if (getmypid() == $parent_pid) {
$process_pool[] = pcntl_fork();
// Get the memory segment where the process set the status of data fetching and set it to KO
if (getmypid() == $parent_pid) {
//I am creating memory here
echo '<br>i : ' . $i . ' mypid : ' . getmypid() . '<br>';
}
}
}
Вот вывод, который я получаю:
я: 0 mypid: 11128
я: 1 мипид: 11128
я: 2 mypid: 11128
я: 3 mypid: 11128
HTTP / 1.1 200 OK Хост: 127.0.0.1:8000 Дата: Пн, 10 Дек 2018 11:07:31 +0000 Соединение: закрыть X-Powered-By: PHP / 7.2.2 Тип контента: text / html; charset = UTF-8 HTTP / 1.1 200 OK Хост: 127.0.0.1:8000 Дата: понедельник, 10 декабря 2018 11:07:31 +0000 Подключение: закрыть X-Powered-By: PHP / 7.2.2 Тип содержимого: текст / HTML; кодировка = UTF-8
я: 0 mypid: 11128я: 1 мипид: 11128
HTTP / 1.1 200 OK Хост: 127.0.0.1:8000 Дата: Пн, 10 Дек 2018 11:07:34 +0000 Соединение: закрыть X-Powered-By: PHP / 7.2.2 Тип контента: text / html; кодировка = UTF-8
я: 0 mypid: 11128я: 1 мипид: 11128
я: 2 mypid: 11128
я: 3 mypid: 11128
я: 4 mypid: 11128
HTTP / 1.1 200 OK Хост: 127.0.0.1:8000 Дата: Пн, 10 Дек 2018 11:07:34 +0000 Соединение: закрыть X-Powered-By: PHP / 7.2.2 Тип контента: text / html; кодировка = UTF-8
я: 0 mypid: 11128
HTTP / 1.1 200 OK Хост: 127.0.0.1:8000 Дата: Пн, 10 Дек 2018 11:07:34 +0000 Соединение: закрыть X-Powered-By: PHP / 7.2.2 Тип контента: text / html; кодировка = UTF-8
я: 0 mypid: 11128я: 1 мипид: 11128
я: 2 mypid: 11128
HTTP / 1.1 200 OK Хост: 127.0.0.1:8000 Дата: Пн, 10 Дек 2018 11:07:34 +0000 Соединение: закрыть X-Powered-By: PHP / 7.2.2 Тип контента: text / html; кодировка = UTF-8
я: 0 mypid: 11128я: 1 мипид: 11128
я: 2 mypid: 11128
я: 3 mypid: 11128
я: 4 mypid: 11128
я: 5 мипид: 11128
Кажется очевидным, что проблема заключается в закрытии соединения по какой-либо причине, что это и как я могу это исправить?
Спасибо за вашу помощь!
Задача ещё не решена.
Других решений пока нет …