В предыдущих версиях напишите Cli При использовании асинхронных или совместных функций в сценариях командной строки, Swool Автоматически проверяет в конце сценария наличие или отсутствие Событие::ожидание() Вызов, если нет, базовая функция автоматически вызовет register_shutdown_function Вызывается в конце сценария Событие::ожидание() Введите цикл событий.
Эта функция доставляет много проблем нижнему слою, и нам приходится проделывать большую работу по кодированию, чтобы решить эту проблему. Тем не менее, все еще существует множество потенциальных рисков, таких как некоторые PHP Утечки памяти в версиях, вызванные определенными специальными приложениями дамп ядра И так далее. В последнем Свул 5 В этом издании мы готовы сбросить это историческое бремя. Больше никаких автоматических добавлений Событие::ожидание() достижение PHP функции выключения Списка.
Сервер 、 Процесс 、 Процесс\Бассейн Пожалуйста, не обращайте внимания на это обновление для связанных программ
Экземпляр ошибки
go(function () {
Co::sleep(1);
echo "done\n";
});Этот код не добавляется в конце сценария Swool\Event::wait() Базовые регистры автоматически функция выключения Список. Сумма в:
register_shutdown_function(function () {
Swoole\Event::wait();
});
go(function () {
Co::sleep(1);
echo "done\n";
});логика обработки останова выключения фазы может вызвать множество дополнительных проблем с обслуживанием.
Правильный пример
останься Свол 4.4 или Свул 5 В этой версии рекомендуется, чтобы:
- Используйте
Сопрограмму\ПланировщикКак запись в программу - Или добавьте его вручную в конце программы
Событие::подождите()
$scheduler = new Coroutine\Scheduler;
$scheduler->add(function () {
Co::sleep(1);
echo "Done.\n";
});
$scheduler->start();Рекомендуемое применение
Или:
go(function () {
Co::sleep(1);
echo "done\n";
});
Swoole\Event::wait();Не рекомендуется