Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Сокет AF_UNIX и одновременный доступ
Форумы портала PHP.SU » » Вопросы новичков » Сокет AF_UNIX и одновременный доступ

Страниц (1): [1]
 

1. antobra - 30 Августа, 2019 - 11:44:08 - перейти к сообщению
Добрый день. Подскажите, кто знает ответ. У меня есть демон на php, который работает на этом же сервере и которому надо локально отправлять некоторые данные через сокет.

Сама настройка вопросов не вызвала, но возник вопрос - сокет с семейством AF_UNIX создает файлы в указанном месте и как я пониманию, то передаваемые данные записываются в этот файл, а после считываются демоном из этого же файла.

Код сервера с php.net:
PHP:
скопировать код в буфер обмена
  1.  
  2. $server_side_sock = dirname(__FILE__)."/server.sock";
  3. if (!socket_bind($socket, $server_side_sock))
  4.         die("Unable to bind to $server_side_sock");
  5.  
  6.  


Код клиента с php.net:
PHP:
скопировать код в буфер обмена
  1.  
  2. // no binding is required if you wish only send and never receive
  3. $client_side_sock = dirname(__FILE__)."/client.sock";
  4. if (!socket_bind($socket, $client_side_sock))
  5.         die("Unable to bind to $client_side_sock");
  6.  


Не может ли произойти такого, что php одновременно передаст данные в этот созданный файл и демон получит не то, что было нужно? То есть так называемый одновременный доступ. Или сокет как-то регулирует это путем блокировки? Не нашел в документации этот момент.

Благодарю за внимание
2. LIME - 30 Августа, 2019 - 16:21:38 - перейти к сообщению
antobra это не файлы на диске
это всеголишь способ адресации чтоб два процесса могли открыть один сокет
то есть сокету выделяется инода и он в нее пишет/читает но эта инода не связана с физическим файлом на диске
подробнее не расскажу сам плаваю в теме
в Linux вообще все что угодно это файлы
(Добавление)
и да
сокет-сервер на самом деле каждому клиенту создает отдельный сокет при коннекте
не должны данные перепутаться
поэкспериментируй чтоли
3. LIME - 30 Августа, 2019 - 20:34:46 - перейти к сообщению
Только применяй rest принцип. Пусть все что надо для ответа будет содержаться в запросе и не зависит от предыстории. То есть сервер без состояния.

 

Powered by ExBB FM 1.0 RC1