запуск скрипта из другого (не екзеком и без крона)

vafel

Новичок
запуск скрипта из другого (не екзеком и без крона)

народ ктонить знает как моджно пустить другой скрипт на параллельное выполнение ?

пробовал делать через сокеты (в одном скрипте открываю сокет, пишу запрос, закрываю) станичка не ждет завешения естественно, она отобразилась, но дальше зайти никуда нельзя пока не отработает запущенный через сокеты скрипт

как это обойти ?
 

vafel

Новичок
просто интересно есть ли иной выход.

чтобы не изменять настройки серевера, он в сейв моде.
 

_RVK_

Новичок
Но больше нечем. если всякого рода екзеки и системы отключены, меняй хостинг.
 

svetasmirnova

маленький монстрик
Форками и threads ещё можно поиграться. Но как я поняла, это тебе тоже не дадут.
 

P.Anton

Новичок
Попробуй "блохой" запустить.
<img src="test.php?par1=value" width="1" height="1">
 

tolya

Guest
см. socket_set_blocking

или из JavaScript используя XmlHttpRequest
 

vafel

Новичок
moxnatiy
пхп пересобирать надо
идея была чтобы не изменять настроек сервера
 

lyxsus

Новичок
а если в файле http://localhost/1.php
написать

<?

...

$f = fopen("http://localhost/2.php", "r");
if($f)
echo "It's ok";
else
echo "Oblom";
fclose($f);

...

?>

?
 

lyxsus

Новичок
если ты знаешь, то перед тем, как вывести что запускается скрипт. мы запрашиваем пхпшник по такому-то адресу, если он запускается, то мы об это узнаем, потому $f не false. скрипт запустился - результаты, видимо, качать не надо, поэтому закрываем ресурс. в противном случае получаем ошибку.
 

vafel

Новичок
nighthunter
да это тот же самый exec
tolya
нито ни то не помогает (
от XMLHTTPREQUEST также вешается браузер на время выполнения скрипта

придется екзеком делать
 

tolya

Guest
Автор оригинала: vafel
tolya
нито ни то не помогает (
от XMLHTTPREQUEST также вешается браузер на время выполнения скрипта

придется екзеком делать
Не пойму чего у тебя не получается?
Вот пример с использованием socket_set_blocking
test.php запускается из index.php. index.php только запускает test.php, не дожидаясь ответа от него.

index.php
PHP:
<?
echo "begin<br>";
$fp = httpGet("localhost", "/new/blocked/test.php");
socket_set_blocking($fp, 1);
echo "end";

function httpGet($host, $path, $port=80)
{
	$full_path = "http://$host$path";

	$query = "GET $full_path HTTP/1.0\r\n".
		"Host: $host:$port\r\n".
		"User-agent: tolya\r\n".
		"\r\n";

	$fp = fsockopen($host, $port);
	fputs($fp, $query);
	return($fp);
}
?>
test.php
PHP:
<?

echo "begin<br>";
for ($i=0; $i<1000; $i++)
{	
	$fp = fopen("d:/wwwserver/www/new/blocked/testing.dat", "w");
	fwrite($fp, "call: $i");

	fclose($fp);
}
echo "end<br>";

?>

Можно также сделать с помощью XmlHttpRequest, не дожидаясь ответа и отработки скрипта.
 
Сверху