У меня есть сценарий, который в настоящее время создает TCP-сокет через fsockopen() один раз за цикл. Каждый раз, когда он открывает соединение, весь скрипт PHP приостанавливается до тех пор, пока он не будет установлен.Возможно ли «que» fsockopen? Несколько TCP-сокетов
Я хочу пойти по пути одновременного подключения 5 одновременных сокетов, чтобы ускорить выполнение сценария.
Есть ли способ, которым я могу «que» соединение fsockopen? В идеале, это выглядело бы как псевдо-код.
$ opensocketcount = 0;
while (1) {
if($opensocketcount < 5) {
for($i=1;$i<6;$i++) {
$sockets[$i] = fsockopen("127.0.0.1",80);
$opensocketcount++;
}
}
//Check to see if socket connection has been established
for($i=1;$i<6;$i++) {
if (has_socket_been_established($sockets[$i])) {
//Post the data.
$opensocketcount -= 1;
socket_close($sockets[$i]);
$sockets[$i] = null;
}
}
}
Ах спасибо, какой позор. Я пытался избежать использования CURL, поскольку скрипт имеет дело с необработанными двоичными данными. –
Нет, CURL используется только для запуска скрипта php. В скрипте php scriptd вы должны установить параметр php.ini, который скрипт выполнит, даже когда соединение будет потеряно. Таким образом вы можете установить тайм-аут CURL на что-то действительно низкое и запускать 10 соединений сокета менее чем за секунду. Но хедз-ап! Это добавит дополнительную нагрузку на веб-сервер, поскольку вы выполняете HTTP-запросы. – DaGardner