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.SU

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


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

> Без описания
DeMonyan
Отправлено: 08 Декабря, 2016 - 22:09:38
Post Id



Новичок


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


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




PHP:
скопировать код в буфер обмена
  1. function exec_script($url, $params = array())
  2. {
  3.     $parts = parse_url($url);
  4.  
  5.     if (!$fp = fsockopen($parts['host'], isset($parts['port']) ? $parts['port'] : 80))
  6.     {
  7.         return false;
  8.     }
  9.  
  10.     $data = http_build_query($params, '', '&');
  11.  
  12.     fwrite($fp, "POST " . (!empty($parts['path']) ? $parts['path'] : '/') . " HTTP/1.1\r\n");
  13.     fwrite($fp, "Host: " . $parts['host'] . "\r\n");
  14.     fwrite($fp, "Content-Type: application/x-www-form-urlencoded\r\n");
  15.     fwrite($fp, "Content-Length: " . strlen($data) . "\r\n");
  16.     fwrite($fp, "Connection: Close\r\n\r\n");
  17.     fwrite($fp, $data);
  18.     fclose($fp);
  19.  
  20.  
  21.  
  22.     return true;
  23. }
  24.  


У меня написан скрипт который парсит порядка 60 тысяч страниц. Дабы не отваливался по таймауту сделал ограничение в 1600 страниц за раз. И после этого с помощью описанной выше функции запускал следующий экземпляр скрипта, а из текущего выходил. При переносе на другой хостинг функция работать перестала, в логах пусто, если в fsockopen добавить переменные для возврата кода и текста ошибки то там 0 и пусто, но скрипт не запускается. Ткните, пожалуйста, в каком направлении копать.

Если добавить var_dump($fp); и var_dump($data); между fwrite($fp, $data); fclose($fp);
Возврат получается:
resource(6415) of type (stream)
string(0) ""
Сама функйия возвращет: bool(true)

(Отредактировано автором: 09 Декабря, 2016 - 15:32:18)

 
 Top
armancho7777777 Супермодератор
Отправлено: 09 Декабря, 2016 - 08:56:49
Post Id



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


Покинул форум
Сообщений всего: 4526
Дата рег-ции: Февр. 2011  
Откуда: Москва


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




CODE (shell):
скопировать код в буфер обмена
  1. php /path/to/file.php > /dev/null 2>&1 &

(Добавление)
Скрипт будет выполняться в фоне.
Если хотите получать логи ошибок, то так:
CODE (shell):
скопировать код в буфер обмена
  1. php /path/to/file.php > /dev/null 2>>/path/to/error.log &
 
 Top
DeMonyan
Отправлено: 09 Декабря, 2016 - 09:57:10
Post Id



Новичок


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


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




Нет у меня шела в виртуальном хостинге. Мне нужно это запускать из PHP.
Суть не в поиске других решений, суть в том чтобы разобраться почему с сокетами не работает.

(Отредактировано автором: 09 Декабря, 2016 - 09:58:46)

 
 Top
DeMonyan
Отправлено: 09 Декабря, 2016 - 23:12:06
Post Id



Новичок


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


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




Проблему решил с помощью поддержки хостинга тестируемого. В nginx просто включили опцию proxy_ignore_client_abort и всё взелетело.
 
 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