【问题标题】:Execute Long Python Script From PHP从 PHP 执行长 Python 脚本
【发布时间】:2019-09-23 05:58:03
【问题描述】:

我想从 PHP 执行 python 脚本。 我在 PHP 中使用 system("C:\python.exe. pythonfile.py ) 来执行它,它执行得很好,但只适用于小脚本。 我的 python 文件执行代码大约需要 5 分钟,但看起来 PHP 只执行小脚本,谁能帮助我,如何从 PHP 执行长 python 脚本并从中获取返回值。

谢谢????

【问题讨论】:

  • 如果你的php脚本通过web服务器运行,那么你面临的问题可能是web服务器的超时参数或者web服务器的php模块。找到它并增加到适当的值。
  • 我已经增加了 20 分钟。 set_time_limit(1200);
  • 您也可以查看 max_execution_time。
  • 如果您提供更多背景信息,人们也可能会帮助您找到更好的方法来实现您想要实现的目标。这个要求听起来有很大的改进空间(在安全方面也是如此!)
  • 正是我想从 PHP 获取输入,在 python 的机器学习模型中传递它的输入并希望在 PHP 中显示它的输出

标签: php python python-3.x phpmyadmin


【解决方案1】:

我也遇到了同样的问题。为了避免 PHP 超时,我使用 PHP popen()/pclose() 在后台运行我的脚本。是这样的:

<?php 
    $command = escapeshellcmd('python pythonfile.py);
    if (substr(php_uname(), 0, 7) == "Windows"){
         pclose(popen("start /B " .$command, "r"));
    }else {
         exec($command2 . " > /dev/null &");  
    }
?>

提示:如果你的 Python 脚本有一些像 print() 这样的打印输出,由于内部缓冲区,你应该将它们全部注释掉,以避免意外关闭。

更多关于popen()命令中“START /B”的信息,请参见:https://docs.microsoft.com/pt-br/windows-server/administration/windows-commands/start

【讨论】:

    最近更新 更多