Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.06.2011, 12:23   #1
TRIZER
Студент
Пользователь
 
Аватар для TRIZER
 
Регистрация: 13.11.2009
Сообщений: 65
Вопрос Использование fread без блокирующего режима

Здравствуйте.
Я столкнулся с такой проблемой - fread в блокирующем режиме тормозит работу скрипта. А как работать в неблокирующем не пойму. Прошу пример чтения пакета неизвестной заранее длинны при помощи fread в неблокирующем режиме. Или укажите, где можно об этом подробно почитать.
Возможно есть другие способы чтения пакетов?
Заранее благодарю.
TRIZER вне форума Ответить с цитированием
Старый 19.06.2011, 12:15   #2
graymaster
Форумчанин
 
Аватар для graymaster
 
Регистрация: 03.05.2011
Сообщений: 158
По умолчанию

Посмотрите в сторону сокетов
пример с php.net
PHP код:
$socket socket_create_listen(1223);
socket_set_nonblock($socket);
socket_accept($socket); 
graymaster вне форума Ответить с цитированием
Старый 19.06.2011, 14:06   #3
TRIZER
Студент
Пользователь
 
Аватар для TRIZER
 
Регистрация: 13.11.2009
Сообщений: 65
По умолчанию

Посмотрю, да только хотел обходиться без этого. Не везде поддерживается, да и переписывать неохота
TRIZER вне форума Ответить с цитированием
Старый 20.06.2011, 09:02   #4
mv28jam
Старожил
 
Аватар для mv28jam
 
Регистрация: 09.09.2008
Сообщений: 2,624
По умолчанию

Цитата:
fread в блокирующем режиме тормозит работу скрипта
Может я чего-то не понимаю, но fread никак не влияет на блокировку файла.
За блокировку файла отвечает flock, причём запрещает чтение для всех только параметр LOCK_EX. На скорость чтения может влиять то как вы файл открыли, те с каким параметром fopen и закрыли ли вы его после чтения.
Стрелок-охотник
mv28jam вне форума Ответить с цитированием
Старый 20.06.2011, 14:02   #5
graymaster
Форумчанин
 
Аватар для graymaster
 
Регистрация: 03.05.2011
Сообщений: 158
По умолчанию

Тут, судя по топику, надо пакеты читать, не файл.

ТС: Это скрипт или апачи-трэд ?
Если скрипт, то можно воспользоваться pcntl - втроичный процесс в блокирующем режиме, основной - принимает инфу от второго по семафору или чему-то подобному. Можно для этого так же заюзать mq - модуль, (только линь), там чтение по определению нон-блок, тогда вторичному придётся только складывать считанные в блокирующем режими данные в качестве мессаг в очередь, а основному - их оттуда читать. Но если у вас нет возможности изменить дифолт-модули в установленном php, или добавлять свои экстеншены, то это проблематично. Кроме того, я не вижу в этом смысла - слишком много мороки - проще как-то сокеты раздобыть.
graymaster вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Использование одной переменной многими без глобальных Horus92 PHP 2 13.01.2011 19:28
использование DCU без PAS kaizer131 Общие вопросы Delphi 10 11.10.2010 15:37
Прокрутка картинок без использование Flash chibis.ru JavaScript, Ajax 3 02.09.2010 14:04
Узнать дескриптор процесса, блокирующего USB Denager Общие вопросы Delphi 3 01.07.2010 16:09
Использование ActiveX без регистрации Zen2007 Общие вопросы .NET 2 10.08.2009 13:40