Проблема такая: скрипт стучится к неправильному IP слишком долго (>30s).
private function connect($ip, $port) {
$connection = @fsockopen("udp://" . $ip, $port, $errno, $errstr, 0.05);
stream_set_timeout(5);
if(!$connection) return false;
stream_set_blocking($connection, true);
return $connection;
}
private function query($connection, $query, $append = "") {
if(!$connection) return false;
$command = pack("c*", 0xFE, 0xFD, $query, 0x00, 0x00, 0x00, 0x01) . $append;
$length = strlen($command);
fwrite($connection, $command, $length);
$data = fread($connection, 4096);
return substr($data, 5);
}
Вас варнинг вида
stream_set_timeout() expects at least 2 parameters, 1 given
совершенно не смущает? stream_set_timeout требуется ставить на ресурс, это не глобальная штука и у этой функции 2 обязательных аргумента. Соответственно вы запрашиваете таймаут на fsockopen
последним параметром - но это UDP, там нет установки соединения вовсе. Поэтому не уверен, может ли fsockopen
по UDP вообще отвалиться по таймауту. Похожим образом сложно таймаут ждать от fwrite. UDP никак не подтвердит, что пакет получен. Можно послать пакет и всё, больше ждать нечего. Но fwrite с сетью всё-таки работает, так что тут таймаут ещё может быть при отправке. Ждёт же скрипт на fread
. И поскольку stream_set_timeout
был вызван некорректно - то таймаут используется дефолтный.
Вот если корректно запросить stream_set_timeout
stream_set_timeout($connection, 5);
То последующий fread
будет учитывать этот таймаут и прервётся по прошествии этого времени.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Есть форма отправки с полями имени фамилией email и телефонаНужно реализовать проверку номера телефона с помощью смс кода
Использую curl Не понимаю, как сохранять файл не зная его расширения?! Тк
использую laravel версии 58 и в шаблоне blade хочу использовать такую конструкцию {{$student->name OR ""}} судя по некоторым источникам должно работать,...
Проблема состоит в запуске локального сервера, будь то OpenServer, то XAMPPОшибка, по совместительству моя проблема, состоит в занятом порте