如何使PHP脚本运行另一个PHP脚本

Phi*_*hil 13 php

我试图完成与之前的Python问题完全相同的事情,但在PHP中.请参阅我以前的(已回答)问题

上一个问题的PHP脚本做了一些事情,然后在同一台服务器上运行另一个PHP脚本,做了一些事情然后退出(而第二个脚本仍然继续它的工作).我该如何实现这一目标?

请注意,PHP脚本同时也是一个网页(所以也许我们可以像以前的问题一样使用它,我的问题的答案是片段,这使得python只是打开url而不是运行子进程...虽然我没有有一个线索,如果这是有用的信息,也许它在PHP中不同,我在PHP中没有太多的经验)...而且我想让每个脚本独立 - 所以如果第一个PHP脚本将完成我想第二个PHP脚本到即使第一个结束,继续工作.

您认为最优雅的方式是什么?会回应iframe的工作还是应该以不同的方式做到这一点?

Tom*_*igh 17

这是一些unix/linux-only hack,可能无法在共享Web服务器上运行:

file1.php

<?php
$somearg = escapeshellarg('blah');
exec("php file2.php $somearg > /dev/null &");   
Run Code Online (Sandbox Code Playgroud)

file2.php

<?php
//do some stuff that will take a while
//$argv should contain 'blah', and also it seems the name of the php file
//this script will continue to run. You might want to set max_execution_time to a sensible value.
Run Code Online (Sandbox Code Playgroud)


小智 5

您可以通过放置 header('Location: second.php'); 在first.php 的末尾并再次放置在second.php 的末尾来开始执行third.php 等等。即使您可以在两个脚本之间创建循环,即在结束first.php后,将启动second.php,在执行second.php后再次执行first.php,再次执行second.php,依此类推。

但请记住,这是一项依赖于浏览器的功能,可以依次执行多少个脚本,完全取决于浏览器允许重定向的次数。我发现mozilla允许23个重定向,这意味着你可以依次执行23个脚本。


Jus*_*ney 2

如果用户将使用 Web 浏览器访问 php 脚本,我将使用 ajax 来调用第二个页面。

用户甚至不知道它正在被调用。

有关 AJAX 的教程,请参阅w3schools

  • Stackoverflow 需要使用 MDN 自动替换 w3schoolds。https://developer.mozilla.org/en/docs/AJAX (4认同)