长时间运行的远程脚本(PHP到Python)

时间:2016-07-12 11:41:24

标签: php laravel ssh remote-server

我在laravel中创建了一个网站。

我使用下面的代码从外部python脚本获取结果。

|b^epsilon| < 1

如果我得到一个大约需要3分钟才能完成的阵列,一切正常。

我刚刚发现问题是php调用挂了很长时间,当python脚本完成后没有发回任何东西,所以php调用只是挂起,怎么会这样?

但是当我从我的python脚本请求一个更大的数组时,我得到一个超时代码的超时。

$ssh = new \phpseclib\Net\SSH2("11.111.11.11", 22);
ignore_user_abort(true);
set_time_limit(0);
$ssh->setTimeout(0);
$result = $ssh->exec("python /url_to_remote_python_file $site $keywords ", $output, $ret_code);

我尝试按照链接Prevent nginx 504 Gateway timeout using PHP set_time_limit()但是在调用exsternal python脚本时我仍然得到502坏网关,外部服务器可以成为问题吗?

我希望在将它作为一个cron作业运行之前让它成功地工作,这根本就是可能的。?

我试图将脚本放在laravel队列系统中。 但它只有在脚本运行大约3分钟时才有效。 如果脚本运行,让我们说10分钟,队列监听器和日志不会向我返回任何内容。

如何从php调用python脚本并确保我得到一个结果。

我需要每天晚上大约12点钟运行我的脚本,以便在新结果时填充我的数据库,但我需要先将其设置为manualy。

实现这一目标的最佳方法是什么?

1 个答案:

答案 0 :(得分:0)

您的问题出在您的网络服务器上。如果您的脚本应该作为cron作业运行,那么您不需要Web服务器,所以只需将其写为命令行脚本(使用php-cli)。