나는이php의 fsockopen이 (자원은 일시적으로 사용할 수 없음) 돌아 오는 이유는 무엇입니까?
function listenForClients()
{
$this->serviceConnection = socket_create(AF_UNIX, SOCK_STREAM, 0);
socket_bind($this->serviceConnection, "\tmp\mysock", 0);
socket_listen($this->serviceConnection, 10000000);
while($clientSocket = socket_accept($this->serviceConnection))
{
$clientMessage = socket_read($clientSocket, 1024);
socket_close($clientSocket);
}
}
같은 매우 간단한 서버 PHP 코드가 그럼 난 주위에 연결의 임의의 숫자 (이후, 몇 가지 이유를 들어이
for ($counter = 0; $counter <= 1000; $counter ++) {
$fp = fsockopen("unix///tmp/mysock", 0, $errno, $errstr);
if (!$fp){
echo "Error: Could not open socket connection at " . $counter . "\n";
exit;
}else{
fputs ($fp, "hello", strlen("hello"));
fclose($fp);
}
}
을하는 매우 간단한 클라이언트가이 300-500) fsockopen은 자원 일시적으로 사용할 수없는 경고와 함께 반환됩니다. 처음에는 약 20-30 개의 연결 지점에서 경고를 받고있었습니다. 하지만 socket_listen에서 backlog 매개 변수를 늘리면 300-500 정도가 될 것입니다. 어떻게 이것을 극복 할 수 있습니까?
초당 많은 수신 연결을 허용하는 PHP 서버 소켓을 만드는 방법은 무엇입니까?
감사합니다.
전체 오류 :
PHP Warning: fsockopen(): unable to connect to unix:///tmp/mysock:0 (Resource temporarily unavailable) in test.php on line 22
현재 "무제한"으로 설정되어 있습니다. – erotsppa
나는 더 분명해야했습니다. 열린 파일 제한 (-n 옵션 또는 모든 제한에 대해 -a)을 확인하십시오. –
open -n이 1024로 설정되었지만 동일한 파일 소켓을 여러 번 열 때이 제한이 사용됩니까? 특히 다른 하나를 연 후에 각각을 닫은 후에? – erotsppa