- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Маркетинг для шоколадной фабрики. На 34% выше средний чек
Через устранение узких мест
Оксана Мамчуева
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
В сокет ничего не пишут с противоположной стороны или пишут что-то отличное от "shutdown".
И цикл выполняется бесконечно.
А может быть, вообще никто не подключается и висит на socket_accept().
На этом телепатический сеанс предлагаю завершить и добавить в код вывод отладочной информации.
Цикл и должен быть бесконечным, пишу слушалку сокета.
С сокетами не работал никогда до этого момента.
1. Чему равны переменные $socket_server, $socket_port?
2. На какой порт коннектились и что отправляли прежде чем поняли что ваш скрипт "висит"?
3. Попробуйте добавить еще одно условие, иначе у вас socket_read пытается читать из $msgsock, который еще не является готовым (клиент не присоеденился).
while (1) {$msgsock = socket_accept($sock);
if ($msgsock) {
$buf = socket_read($msgsock, 2048, PHP_NORMAL_READ); //судя по всему здесь висит.
if ($buf == 'shutdown') {
break;
}
socket_close($msgsock);
}
usleep(100000);
}
socket_close($sock);
1. localhost, 10001
2. скриптом запускаю вебсервер через ajax, потом этим же скриптом подаю команду на отключение - кликами по картинке запускаю и останавливаю.
После подачи команды на остановку пытаюсь снова запустить - не получается, только после истечении нескольких минут запускаю. Т.е. какой-то висяк.
3. спасибо, попробую.
пытается читать из $msgsock, который еще не является готовым (клиент не присоеденился).
Функция socket_accept() в данном случае будет ждать до тех пор, пока клиент не присоединится.
Я разобрался - при закрытии сокета TCP еще некоторое время открыт и поэтому не удается работать нормально.