Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php执行无限循环_Php_Loops_Exec - Fatal编程技术网

php执行无限循环

php执行无限循环,php,loops,exec,Php,Loops,Exec,下面是调用exec在后台运行脚本test.php的代码 exec("/home/gooffers/test.php?one=one &"); 脚本test.php包含以下内容 $test = $_GET['one']; echo $test; 但是,这会创建一个无限循环(无限多个进程),导致服务器崩溃。为什么会发生这种情况 我不知道发生了什么,但我认为应该是这样 exec("php /home/gooffers/test.php?one=one &"); 通过命令行(php

下面是调用exec在后台运行脚本test.php的代码

exec("/home/gooffers/test.php?one=one &");
脚本test.php包含以下内容

$test = $_GET['one'];
echo $test;

但是,这会创建一个无限循环(无限多个进程),导致服务器崩溃。为什么会发生这种情况

我不知道发生了什么,但我认为应该是这样

exec("php /home/gooffers/test.php?one=one &");

通过命令行(php cli)运行脚本时,
$\u GET
不可用

有关如何在php中向命令行脚本传递参数,请参见此处:

基本上是

exec("/home/gooffers/test.php arg1 arg2");
然后通过

$argument1 = $argv[1];
$argument2 = $argv[2];

我们需要更多地了解在您的代码中如何使用
exec()
,看看您的主代码中是否有无限循环。@戴维斯,这是我在我的问题中看到的所有代码。Hudhud-谢谢您的回复-但同样,您能用主脚本的完整内容更新您的帖子吗(其中包含exec())和test.php脚本…完整的意思是“@david,你不明白。这是两个文件中的所有代码。一个文件只包含exec,另一个文件只包含两行GET和echo。这就是我所有的代码。
$argv[0]
指的是脚本文件(/home/gooffers/test.php),因此,
$argv[1]
等于第一个参数。但您是对的,这是一个好方法。使用php进程时,我习惯使用类似于:
list($command,$args)=array(array_shift($argv),$argv)
。通过网页在线阅读,我认为可以采用我发布的方式。尽管我还没有验证它,因为exec出于某种原因不断进入循环并导致服务器崩溃。你的帖子似乎是正确的方式。我将尝试一下,看看它是如何工作的。我仍然不明白exec为什么会进入循环。我找到了一个男人y在网上发布了关于exec和无限循环的文章。一个人建议我们在php上使用php cli。不知道这是否会有什么不同。我建议用命令行参数尝试正确的方法。也许这会立即解决无限循环问题。非常奇怪,必须对服务器/php Confix做些什么配置。从未遇到过exec的任何问题。但是试一试!不。如果您使用wget,您的命令将有效,类似于
exec(“wget”)http://localhost/gooffers/test.php?one=one &“
,但如果您使用的是php cli,则不会。php cli使用类似C的nommage获取参数,因此
$argc
$argv