PHP代码文件通过shell运行[已关闭]

k4ymrczo  于 2023-02-24  发布在  Shell
关注(0)|答案(1)|浏览(84)

很难判断此处所问的问题。此问题模棱两可、模糊不清、不完整、过于宽泛或过于修辞,无法以其当前形式合理地回答。若要获得澄清此问题以便重新打开的帮助,请单击visit the help center
10年前关闭了。
我有非常沉重的PHP代码文件,创建PDF格式的200,000条记录。PDF页面的总数将高达150,000。我试图通过浏览器运行我的代码,但它是无法做到这一点。我想我必须通过 shell 运行它-或者有人能建议替代方法吗?

dsf9zpds

dsf9zpds1#

如果您希望PHP脚本将其调用到shell中,则:

exec("php path/to/script.php&");

否则,就按终端引用的内容操作。
另外,检查你的php.ini文件,它可能在一段时间后被设置为超时。这可能是你的问题。如果是这种情况,你最好把它交给一个用低级语言编写的程序,如C或C++,然后再交给PHP。你也可以把超时增加到一个更高的值,但如果它花的时间太长,它可能会拖累你的服务器。
如果你想在你的浏览器中看到它完成的时候。确保你可以得到进程的pid,然后创建一个脚本来查看进程的状态。当它完成的时候,让AJAX把它加载到当前的框架中。

更新:

大概是这样的

$pid = exec("nohup $command > /dev/null 2>&1 & echo $!");

这里命令是你想要做的。
然后一些jquery像:

<script>
$(document).ready(function()
{
   checkStatus();
});

function checkSatus()
{
   $.get("/path/to/checkStatus.php,{pid: <?php echo $pid;?>},function(){
     if(data.running == 1) alert("PDFS done");
   window.setTimeOut(checkStatus,30000);
}
</script>

然后另一个checkStatus.php文件:

<?php
  $pid = $_GET["pid"];
  $isRunning = file_exists( "/proc/$pid" );
  if($isRunning){
    json_encode(Array("running"=>1));
  }
  else
  {
    json_encode(Array("running"=>0));
  }
  • 对代码没有任何保证。它只是被快速地组合在一起。

相关问题