запуск другого скрипта в фоне

Alkinoy

Начинающий
запуск другого скрипта в фоне

По поиск излази на форуме все. Ни по одному варианту заставить второй скрипт работать в фоне не удалось.
РНР 5.2.1, апач 2.2, win2003server ...

вот код запускающего:
PHP:
<?php
echo 'Creating backgroung proc...
';
exec("php.exe d:/www/skif/temp/q.php");
echo 'done...';
?>
вот скрипт q.php
PHP:
<?php
$db = mssql_connect(....) or die('Can not connect');

if (!mssql_select_db('test'))
  echo "Can't select db";

echo 'start at '.time();

$query = <здесь запрос, который долго отрабатывает>

$res =  mssql_query($query);

echo ', finish at '.time();
?>
пробовал запускать exec("php.exe d:/www/skif/temp/q.php > 1.txt"); вывод перенаправляется в файл, но запускающий скрипт все равно ждет окончания. пробовал ob_*, пробовал через start. Пробовал еще кучу всего.
Как же заставить запускающий скрипт не ждать окончания второго?
 

Alkinoy

Начинающий
путь к рнр.ехе прописан в переменной path. скрипт q.php выполняется. вопрос в другом - не могу затсавить его выполняться в фоне, что бы первый скрипт не ожидал окончания выполнения второго.

-~{}~ 10.07.07 13:25:

пока получилось только сокетами
PHP:
$fsock = fsockopen("мой_сервер",80);
if (!$fsock) die ("failed to connect");
  $request = "POST /test/q.php HTTP/1.1";
  fwrite($fsock,$request);  
  fclose ($fsock);
 

asm

Пофигист
Alkinoy
Значит сокет не ждет завершения? :)
В винде не в курсе а в нормальных ОС
Код:
`php /path/to/your/script/q.php &`
-~{}~ 10.07.07 13:33:

А вообще нужно смотреть в сторону оптимизации запроса а не костылей.
 

planarik

Новичок
Попробуй через fork(), хотя под Win результат не гарантирован.
 

invander

Новичок
exec("php /path/to/your/script/q.php > /dev/null 2>&1")

в Винде тоже есть аналог /dev/null

получится

exec("php.exe d:/www/skif/temp/q.php > null 2>&1");

а там попробуй, просто проверить негде

P.S. Не понял сразу что скрипт пускается
 

Alkinoy

Начинающий
Автор оригинала: invander

exec("php.exe d:/www/skif/temp/q.php > null 2>&1");

а там попробуй, просто проверить негде
не привело к ожидаемому результату. запустилось, но ждет выполнения фонового файла.
 
Сверху