shell_exec () управление тайм-аутом & exec ()

Я запускаю сторонний скрипт, используя написанный мной класс-оболочку, который вызывает 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

http://www.php.net/manual/en/function.exec.php

8
задан Community 23 May 2017 в 11:33
поделиться

1 ответ

Я предлагаю вам изучить возможность использования proc_open . Вы можете настроить его так, чтобы он возвращал ресурс потока, вручную сохранял таймер, и если таймер истекает до завершения процесса, вы можете завершить его с помощью proc_terminate . Если он завершится до истечения таймера, вы можете использовать proc_close , затем stream_get_contents , чтобы получить данные, которые в противном случае были бы записаны в стандартный вывод.

См. http://www.php.net/manual/en/function.proc-open.php

7
ответ дан 5 December 2019 в 07:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: