PHP中的异步操作:文件操作范围、参数传输和限制执行访问
我有一个php脚本,它将数据发送到另一个脚本并异步处理(至少我希望得到类似的结果)。下面是名为.php的PHP中的异步操作:文件操作范围、参数传输和限制执行访问,php,curl,Php,Curl,我有一个php脚本,它将数据发送到另一个脚本并异步处理(至少我希望得到类似的结果)。下面是名为.php的代码 include_once("../caller.php"); chdir(__DIR__); fclose(STDOUT); //THIS fclose(STDIN); //THIS fclose(STDERR); //THIS function giveCake($arg1,$arg2){ global $mysqli; $sleep
代码
include_once("../caller.php");
chdir(__DIR__);
fclose(STDOUT); //THIS
fclose(STDIN); //THIS
fclose(STDERR); //THIS
function giveCake($arg1,$arg2){
global $mysqli;
$sleep = 15; //script has to sleep
(...) code amongst sleep (...)
sleep($sleep);
$_SESSION; //would session variable of the user be available if the script is called as described?
//script caller.php is firstly initiated by a script with pre-defined $_SESSION
//now that I'm thinking maybe it won't since it is called from the command line...
pcntl_exec("/usr/bin/php",Array($_SERVER['argv'][1]));
}
if (!isset($_SERVER["HTTP_HOST"])) { //check if it comes from within the server? localhost?
$arg1 = parse_str($argv[1], $_GET);
$arg2 = parse_str($argv[1], $_POST);
if($arg1 && $arg2){
giveCake($arg1,$arg2);
}
}
标题中给出了我的担忧,如下所示:
通过关闭文件操作(如called.php开头所述),这会影响可能正在使用文件操作的所有其他脚本,还是只影响执行时受影响的脚本
如果使用cURL调用,我会让脚本容易受到不适当执行的攻击吗?尽管我认为我肯定可以访问$\u会话,如果有人想执行它,这会让它变得很容易。有什么办法可以解决这个问题吗
考虑到我需要在脚本之间传输的参数,可以很容易地获得吨字节,因为在每个数组中大约有400字节*x个数组,在执行方面会有任何问题吗
非常感谢你的帮助,我希望你不要认为这是非常广泛的,因为我已经详细地尝试和详细说明了我所有的关注点,并且希望能帮助整个过程(比碎片化更容易)。请尽可能提供帮助,tyvm。Q1:文件操作始终会影响当前正在执行的脚本,当然包括通过require
或include
加载的所有库
问题2:根据调用者和被调用者所在的位置,您可以限制访问,例如通过限制对某些IP的访问,或者通过.htaccess访问方法
比如:
命令拒绝,允许
全盘否定
允许从1.2.3.4开始
问题3:同样取决于两个脚本之间的连接,如果您有足够的可用带宽,通常大数据量应该没有问题
我们有一些正在运行的脚本,可以定期处理大约数百兆字节的数据。可能需要通过在php.ini
中设置max\u execution\u time
,或者使用ini\u set()
,或者使用set\u time\u limit()
(这是一种不同的方法)来扩展或关闭脚本执行时间限制。pcntl\u exec()
将简单地用新的进程替换当前进程。实际上没有发生任何沟通。我想知道你怎么会认为某些异步通信正在发生
另外,我不确定$\u服务器['argv'][1]
在这里应该做什么。你的意思是不是argv[0]
所以现在你只是展示了一堆不起作用的代码。这太少了。取决于您的Web服务器。通常每个php调用都是完全独立的,不包括任何正在进行的会话。但是,在某些Web服务器上,更改一个脚本中的设置更改将成为服务器范围内的更改
<Limit GET POST>
order deny,allow
deny from all
allow from 1.2.3.4
</Limit>