Я запускаю сторонний скрипт, используя написанный мной класс-оболочку, который вызывает shell_exec ()
и передает в файл Я разбираю позже, используя PHP-код. Я должен упомянуть, что это работает, но я пытаюсь улучшить функциональность, столкнувшись с вариантом использования, о котором я не задумывался.
Как лучше всего управлять таймаутом в shell_exec ()? Я думал об обёртывании его в try () catch ()
, но я ' Я не уверен, как лучше всего обрабатывать компонент времени.
Я читал здесь несколько вопросов, касающихся shell_exec ()
и exec ()
, и кажется, что передавая выходные параметры в exec ()
вы можете получить возврат, но это зависит от того, завершится ли сценарий статусом возврата. Кроме того, на моей мини-тестовой странице я не могу заставить ее возвращать какой-либо вывод!
Другой вариант, о котором я подумал, - это использовать модальное диалоговое окно со спиннером в стиле ajax во время работы скрипта и настройкой руководства. Тайм-аут в JavaScript. Который затем дал пользователю диалоговое сообщение с моделью о его сбое / тайм-ауте и завершении.
Есть ли какие-либо приемлемые методы для этого варианта использования?
Мой мини-тест состоял из следующего:
public $e_return = array();
public $e_status = '';
// Paths are absolute from /
public function execCheck($domain){
exec($this->ssl_check_path." -s ".$domain." -p 443 > ".$this->folder.$this->filename." 2>&1 &", &$this->e_return, &$this->e_status);
}
// Returns
Array
(
)
0
Использование этого вопроса в качестве ссылки , Мы читали здесь несколько вопросов, касающихся shell_exec ()
и exec ()
, и кажется, что, передав выходные параметры в exec ()
, вы можете получить возврат, но это зависит от завершения сценария со статусом возврата. Кроме того, на моей мини-тестовой странице я не могу заставить ее возвращать какой-либо вывод!
Другой вариант, о котором я подумал, - это использовать модальное диалоговое окно со спиннером в стиле ajax во время работы скрипта и настройкой руководства. Тайм-аут в JavaScript. Который затем дал пользователю диалоговое сообщение с моделью о его сбое / тайм-ауте и завершении.
Есть ли какие-либо приемлемые методы для этого варианта использования?
Мой мини-тест состоял из следующего:
public $e_return = array();
public $e_status = '';
// Paths are absolute from /
public function execCheck($domain){
exec($this->ssl_check_path." -s ".$domain." -p 443 > ".$this->folder.$this->filename." 2>&1 &", &$this->e_return, &$this->e_status);
}
// Returns
Array
(
)
0
Использование этого вопроса в качестве ссылки , Мы читали здесь несколько вопросов, касающихся shell_exec ()
и exec ()
, и кажется, что, передав выходные параметры в exec ()
, вы можете получить возврат, но это зависит от завершения сценария со статусом возврата. Кроме того, на моей мини-тестовой странице я не могу заставить ее возвращать какой-либо вывод!
Другой вариант, о котором я подумал, - это использовать модальное диалоговое окно со спиннером в стиле ajax во время работы скрипта и настройкой руководства. Тайм-аут в JavaScript. Который затем дал пользователю диалоговое сообщение с моделью о его сбое / тайм-ауте и завершении.
Есть ли какие-либо приемлемые методы для этого варианта использования?
Мой мини-тест состоял из следующего:
public $e_return = array();
public $e_status = '';
// Paths are absolute from /
public function execCheck($domain){
exec($this->ssl_check_path." -s ".$domain." -p 443 > ".$this->folder.$this->filename." 2>&1 &", &$this->e_return, &$this->e_status);
}
// Returns
Array
(
)
0
Использование этого вопроса в качестве ссылки , Невозможно выполнить сценарий PHP с использованием PHP exec
Я предлагаю вам изучить возможность использования proc_open
. Вы можете настроить его так, чтобы он возвращал ресурс потока, вручную сохранял таймер, и если таймер истекает до завершения процесса, вы можете завершить его с помощью proc_terminate
. Если он завершится до истечения таймера, вы можете использовать proc_close
, затем stream_get_contents
, чтобы получить данные, которые в противном случае были бы записаны в стандартный вывод.