Я ищу лучшее, или любой путь действительно для запуска процесса с php в фоновом режиме, таким образом, я могу уничтожить его позже в сценарии.
Прямо сейчас я использую: shell_exec ($Command); проблема с этим - это, ожидает программы для закрытия.
Я хочу что-то, что будет иметь тот же эффект как nohup, когда я выполню команду оболочки. Это позволит мне выполнять процесс в фоновом режиме, так, чтобы позже в сценарии он мог быть закрыт. Я должен закрыть его, потому что этот сценарий будет работать регулярно, и программа не может быть открыта, когда это работает.
Я думал о генерации .bat файла для выполнения команды в фоновом режиме, но даже затем, как я уничтожаю процесс позже?
Код я видел Linux:
$PID = shell_exec("nohup $Command > /dev/null & echo $!");
// Later on to kill it
exec("kill -KILL $PID");
Править: Оказывается, что я не должен уничтожать процесс
Будет ли это функция в Руководстве PHP Справка?
function runAsynchronously($path,$arguments) {
$WshShell = new COM("WScript.Shell");
$oShellLink = $WshShell->CreateShortcut("temp.lnk");
$oShellLink->TargetPath = $path;
$oShellLink->Arguments = $arguments;
$oShellLink->WorkingDirectory = dirname($path);
$oShellLink->WindowStyle = 1;
$oShellLink->Save();
$oExec = $WshShell->Run("temp.lnk", 7, false);
unset($WshShell,$oShellLink,$oExec);
unlink("temp.lnk");
}
Вот пример из Google. Finite_faces_iterator был набран.
Interval_skip_list isl;
for(Finite_faces_iterator fh = dt.finite_faces_begin();
fh != dt.finite_faces_end();
++fh){
isl.insert(Interval(fh));
}
std::list<Interval> level;
isl.find_intervals(50, std::back_inserter(level));
for(std::list<Interval>::iterator it = level.begin();
it != level.end();
++it){
std::cout << dt.triangle(it->face_handle()) << std::endl;
}
Это делает не то, что вы хотите, но дает вам пример того, что можно сделать с помощью итератора.
-121--2410600- Получение соединения JDBC от EntityManager
в EclipseLink получает ответ в вики EclipseLink .
Способ отличается в зависимости от версии API JPA. Вот выписка из вики:
JPA 2,0
entityManager.getTransaction().begin();
java.sql.Connection connection = entityManager.unwrap(java.sql.Connection.class);
...
entityManager.getTransaction().commit();
JPA 1,0
entityManager.getTransaction().begin();
UnitOfWorkImpl unitOfWork = (UnitOfWorkImpl)((JpaEntityManager)entityManager.getDelegate()).getActiveSession();
unitOfWork.beginEarlyTransaction();
java.sql.Connection connection = unitOfWork.getAccessor().getConnection();
...
entityManager.getTransaction().commit();
-121--4780313- Из руководства php для exec
:
Если программа запущена с этой функцией, то для продолжения работы в фоновом режиме выходные данные программы должны быть перенаправлены в файл или другой выходной документ. Если этого не сделать, PHP зависнет до тех пор, пока не закончится выполнение программы.
то есть передача выходных данных в файл и php не будет ждать его:
exec('myprog > output.txt');
Из памяти, я полагаю, есть управляющий символ, который вы можете добавить (как вы делаете с @) к семейству команд exec
, который также предотвращает приостановку выполнения - не можете вспомнить, что это такое.
Изменить Найдено! В unix программы, выполняемые с & prepended, будут выполняться в фоновом режиме. Прости, не очень тебе помогает.