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 :: Чат на Вебсокетах в PHP

 PHP.SU

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


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

> Описание: stream_select(): supplied argument is not a valid stream resource
Artemphp
Отправлено: 06 Апреля, 2016 - 11:47:49
Post Id


Новичок


Покинул форум
Сообщений всего: 4
Дата рег-ции: Апр. 2016  


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




Доброго времени суток!
Обновил движок своего чата (https://schat[dot]org[dot]ua/ ) используя исходники с хабра [url]https://habrahabr[dot]ru/company/ifree/blog/210228/ [/url] некоторое время работало нормально но начало виснуть по непонятной причине, в логах пишет следующее предупреждение:
stream_select(): supplied argument is not a valid stream resource in /www/schat.org.ua/chat/server/We bsocketGeneric.php on line 70

И чат начинает виснуть. Часть кода:


PHP:
скопировать код в буфер обмена
  1.    
  2.     const MAX_SOCKETS = 1000;
  3.     const SOCKET_MESSAGE_DELIMITER = "\n";
  4.     protected $clients = array();
  5.     protected $services = array();
  6.     protected $_server = null;
  7.     protected $_service = null;
  8.     protected $_master = null;
  9.     protected $_read = array();//буферы чтения
  10.     protected $_write = array();//буферы заииси
  11.     public $timer = null;
  12.         public $parVal = 0;
  13.         public $parLog = 0;
  14.     public function start() {
  15.         $this->onStart();
  16.         if ($this->timer) {
  17.             $timer = $this->_createTimer();
  18.         }
  19.         while (true) {
  20.                         $tmp = date('U');
  21.                         //if($this->parVal+5 < $tmp && $this->parVal > 0){
  22.                         if($this->parVal != 0 && $this->parVal+100 < $tmp){
  23.                                 $this->Strt($tmp);
  24.                                 $this->parVal = $tmp;
  25.                         }
  26.                         if($this->parLog != 0 && $this->parLog+30 < $tmp){
  27.                                 $this->GetAllLog();
  28.                                 $this->parLog = $tmp;
  29.                         }
  30.             //подготавливаем массив всех сокетов, которые нужно обработать
  31.             $read = $this->clients + $this->services;
  32.  
  33.             if ($this->_server) {
  34.                 $read[] = $this->_server;
  35.             }
  36.  
  37.             if ($this->_service) {
  38.                 $read[] = $this->_service;
  39.             }
  40.  
  41.             if ($this->_master) {
  42.                 $read[] = $this->_master;
  43.             }
  44.  
  45.             if ($this->timer) {
  46.                 $read[] = $timer;
  47.             }
  48.  
  49.             if (!$read) {
  50.                         //if (strlen($read)) {
  51.                            
  52.                 return;
  53.             }
  54.  
  55.             $write = array();
  56.  
  57.             if ($this->_write) {
  58.                 foreach ($this->_write as $connectionId => $buffer) {
  59.                     if ($buffer) {//var_export($buffer);
  60.                         $write[] = $this->getConnectionById($connectionId);
  61.                     }
  62.                 }
  63.             }
  64.             $except = $read;
  65.             stream_select($read, $write, $except, NULL);
  66.  


Предупреждение выдает на строке stream_select($read, $write, $except, NULL);
Возможно нужно делать какието дополнительные проверки $read?
Ресурс пользуется популярностью и есть такое чувство что ктото его специально ложит, есть ли такая возможность?
Подскажите пожалуйста.
 
 Top
esterio
Отправлено: 06 Апреля, 2016 - 12:49:21
Post Id



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


Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012  
Откуда: Украина, Львов


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




Я бы рекомендовал переписать чат с PHP на nodejs+sockets.js (именно ту часть что отвечает за сокеты).
 
 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