В настоящее время я использую cURL multi для проверки тысяч кодов статуса http за несколько секунд, и он работает очень хорошо.
Однако, мне интересно - это их все равно, я могу проверить, отвечает ли порт (например, mysql) с помощью cURL или другого метода многозадачности PHP?Способ проверки портов с помощью PHP (многопоточность?)
0
A
ответ
2
Короткий ответ:
нет потоков в PHP.
Однако вы можете взглянуть на расширение pcntl. Это не касается потоков, это fork (это означает, что процесс будет создан для каждой вилки).
A Thread extension был разработан несколько лет назад, но он не обновлялся уже 2 года.
Вилы являются абсолютно ценными и могут использоваться в вашем прецеденте, но его нелегко сохранить или написать. В зависимости от ваших потребностей вы можете лучше работать с python или perl, которые имеют лучшую поддержку потоков.
2
Вы можете использовать fsockopen()
для сканирования портов, но каждый PHP-скрипт работает по 1 потоку.
Краткий ответ: Нет. Используйте язык, поддерживающий многопоточность. Или что-то такое асинхронное, как Node.js – DaveRandom
Проблема в том, что использование 'fsockopen' является синхронным; после подключения вы можете установить сокет на неблокирование и использовать 'stream_select' для мультиплексирования ваших соединений, но вы теряете время, затраченное на подключение. Кроме того, вам по-прежнему нужен код для обработки ответа от этого порта (например, mysql) –