在这里,我将详细介绍我的流程。
我正在同一主机上执行 Ajax 请求。AJAX 调用saveUser.php
在saveUser.php
,我已经包括在内Common.php
。
Common.php
有createFile1()
和createFile2()
功能。
createFile1()
功能只是sample1.php
为了另一个目的而创建。
在createFile2()
,我正在创建一个文件sample2.php
并执行一个exec('php /home/public/sample2.php > /dev/null &');
命令来执行该文件。
我分别调用这个createFile1()
和createFile2()
函数saveUser.php
,AJAX 请求从中调用它。
由于我已将 exec 命令设置为在命令&
结束时通过 ' ' 在后台运行,因此它无需等待响应即可返回,并且一切顺利。
但是当我检查我的服务器时,这些文件 sample1.php 和 sample2.php 被一次又一次地创建。似乎所有这些saveUser.php
操作都在一次又一次地执行,直到我sample2.php
从 SSH 停止该进程。
我检查了进程列表,每次 ' php /home/public/sample2.php
' 都有new process_id
,所以它确认它正在一次又一次地执行。如果我删除exec()
代码并从 SSH 执行这个 sample2.php,它会按预期工作,不存在这样的问题。
请建议我怎么了?服务器配置是否有问题,我使用的是hostgator共享帐户。
我也包含相同Common.php
的文件sample2.php
,以防万一它可以帮助它。
提前感谢您的帮助。
saveUser.php 代码
include_once dirname(__FILE__).'/Common.php';
createFile1();
createFile2();
echo 'saved successfully!';
Common.php 代码
function createFile1()
{
$template = file_get_contents('sendDmTemplate.php');
$serviceFp = fopen('sendDmFiles/sample1.php',"w");
fwrite($serviceFp , $fileContent);
fclose($serviceFp);
}
function createFile2()
{
$fileContent = file_get_contents(dirname(__FILE__).'/sampleFileTemplate.php');
$serviceFp = fopen('sample2.php',"w");
fwrite($serviceFp , $fileContent);
fclose($serviceFp);
exec('php '.dirname(__FILE__).'/sample2.php > /dev/null &');
}
sample2.php 代码
include_once dirname(__FILE__).'/Common.php';
echo 'hi';