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

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

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Без описания
antobra
Отправлено: 30 Августа, 2019 - 11:44:08
Post Id


Посетитель


Покинул форум
Сообщений всего: 327
Дата рег-ции: Окт. 2010  


Помог: 1 раз(а)




Добрый день. Подскажите, кто знает ответ. У меня есть демон на 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 одновременно передаст данные в этот созданный файл и демон получит не то, что было нужно? То есть так называемый одновременный доступ. Или сокет как-то регулирует это путем блокировки? Не нашел в документации этот момент.

Благодарю за внимание
 
 Top
LIME
Отправлено: 30 Августа, 2019 - 16:21:38
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




antobra это не файлы на диске
это всеголишь способ адресации чтоб два процесса могли открыть один сокет
то есть сокету выделяется инода и он в нее пишет/читает но эта инода не связана с физическим файлом на диске
подробнее не расскажу сам плаваю в теме
в Linux вообще все что угодно это файлы
(Добавление)
и да
сокет-сервер на самом деле каждому клиенту создает отдельный сокет при коннекте
не должны данные перепутаться
поэкспериментируй чтоли
 
 Top
LIME
Отправлено: 30 Августа, 2019 - 20:34:46
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




Только применяй rest принцип. Пусть все что надо для ответа будет содержаться в запросе и не зависит от предыстории. То есть сервер без состояния.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB