Продолжить выполнение после вызова функции php passthru()

При использовании функции php passthru() по умолчанию остается до завершения выполнения внешнего скрипта.

В руководстве по PHP говорится ::::: «Если программа запущена с помощью этой функции, для того, чтобы она продолжала работать в фоновом режиме, вывод программы должен быть перенаправлен в файл или другой поток вывода. В противном случае будет вызвать зависание PHP до тех пор, пока выполнение программы не завершится». - http://php.net/manual/en/function.passthru.php

Я хочу собирать внешние данные скрипта за определенное время, например. на 30 секунд, а после этого продолжить выполнение php-скрипта. Любые идеи, как это сделать?

Мой текущий код:

    ob_start();
    passthru("/home/somefolder/somefolder2/program $pic1 $pic2");
    $details = ob_get_contents();
    ob_end_clean();

Проблема в приведенном выше коде заключается в том, что иногда «программный» скрипт продолжает выполняться некоторое время, но я не хочу, чтобы пользователь зависал в этом процессе более 30 секунд.

Я подумал о перенаправлении вывода в файл и прочитал его через 30 секунд (согласно мануалу). Но я не знаю, как перенаправить вывод в файл.


person EastSw    schedule 29.05.2012    source источник


Ответы (1)


"/home/somefolder/somefolder2/program $pic1 $pic2 > /path/to/your/file 2>&1"

И если вы хотите, чтобы он работал в фоновом режиме, добавьте & в конце.

"/home/somefolder/somefolder2/program $pic1 $pic2 > /path/to/your/file 2>&1 &"
person xdazz    schedule 29.05.2012
comment
будет ли это продолжать выполнение php-скрипта без зависаний до завершения выполнения программы? - person EastSw; 29.05.2012
comment
Если вы позволите ему работать в фоновом режиме, то выполнение php-скрипта не будет зависать. - person xdazz; 29.05.2012
comment
не могли бы вы объяснить назначение частей 2›&1? - person EastSw; 29.05.2012