Задать вопрос
Rxd
@Rxd

Как реализовать рекурсивный запуск PHP на хостинге?

Имеется хостинг на котором max_execution_time = 30, exec и system отключены. Нужно спарсить где-то 200-300 страниц, при этом скрипт должен вызывается по крону через определенное время. Решил сделать через рекурсию , что-то вроде
$var1 = $_GET["var1"];
... 
curl_setopt($ch, CURLOPT_URL,"http://domain.com/myphp.php?var1="....);
curl_exec($ch);

Но проблема в том, что все отработавшие скрипты остаются "висеть", ожидая ответа, что сильно тормозит весь процесс, да и больше 5 скриптов не дает... Как настроить курлы, чтобы они не ждали ответа? Или может быть есть какие-то более практичные альтернативы?
  • Вопрос задан
  • 435 просмотров
Подписаться 2 Оценить Комментировать
Решения вопроса 1
UAPEER
@UAPEER
UAPEER Hosting Solutions Англия
Куда проще будет сменить хостинг или купить VDS, что сейчас есть наиболее популярным. Иначе после решения проблемы с 30 сек, вас начнут "трясти" за нагрузку.
Предлагаю свои услуги в Англии: UAPEER Hosting Solutions
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
@Dark_Dante
Делал когда то через сокеты, которые вызывыют сам скрипт
public function exec_script($url, $params = array()){
		$parts = parse_url($url);
	 
		if (!$fp = fsockopen($parts['host'], isset($parts['port']) ? $parts['port'] : 80))
		{
			return false;
		}
	 
		$data = http_build_query($params, '', '&');
	 
		fwrite($fp, "POST " . (!empty($parts['path']) ? $parts['path'] : '/') . " HTTP/1.1\r\n");
		fwrite($fp, "Host: " . $parts['host'] . "\r\n");
		fwrite($fp, "Content-Type: application/x-www-form-urlencoded\r\n");
		fwrite($fp, "Content-Length: " . strlen($data) . "\r\n");
		fwrite($fp, "Connection: Close\r\n\r\n");
		fwrite($fp, $data);
		fclose($fp);
	 
		return true;
	}


Ну а вызов был такой
//теперь нам надо чекнуть ссылку на наличие в базе
				$b=$this->checkBase($hash);
				//если в базе такой страницы не существует
				if($b==false){
					$this->exec_script($addcache_url, array('hash'=>$hash, 'href'=>$href, 'parent'=>$content["id"]));
						
					
				}
Ответ написан
Комментировать
@entermix
Можно парсить пачками, т.е. по несколько страниц за 1 запуск
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы