PHP中的异步操作:文件操作范围,参数传输和限制执行访问


Async operation in PHP: file operation scope, argument transfer and restricting execution access

我有一个php脚本,将数据发送到另一个脚本并异步处理它(至少我希望同样得到它)。以下是called.php

的代码
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);
    }
}

我的关注在标题中给出,如下:

  1. 通过关闭文件操作(就像在called.php的开头),这会影响所有其他可能使用文件操作的脚本,还是只影响那些在执行时受到影响的脚本?
  2. 如果使用cURL调用,我会让脚本容易受到不适当的执行吗?虽然我认为我肯定可以访问$_SESSION,如果有人想要执行它,这将使它很容易被欺骗。有什么办法解决这个问题吗?
  3. 考虑到我需要在脚本之间传输的参数可以很容易地实现字节,因为在每个数组中大约400字节* x数组会有任何关于执行的问题吗?

非常感谢您的帮助,我希望您不要认为这是非常广泛的,因为我已经尝试并详细说明了我所有的关注,并希望在整个过程中得到帮助(比分割它更容易)。请尽量帮忙,tyvm

Q1:文件操作总是影响当前正在执行的脚本,当然包括通过requireinclude加载的所有库。

Q2:根据调用者和被调用者的位置,你可以限制访问,例如限制对某些ip的访问,或者通过。htaccess访问方法。

:

<Limit GET POST>
 order deny,allow
 deny from all
 allow from 1.2.3.4
</Limit>

Q3:同样取决于两个脚本之间的连接,如果您有足够的可用带宽,通常应该没有大数据量的问题。

我们有一些正在运行的脚本,可以定期处理几百兆字节的数据。可能需要通过在php.ini中设置max_execution_time或使用ini_set()或使用set_time_limit()(这是一种不同的方法)来扩展或关闭脚本执行时间限制。

pcntl_exec()将简单地用新进程替换当前进程。实际上没有通信发生。我想知道你怎么能认为一些异步通信正在发生。

我也不确定$_SERVER['argv'][1]应该在这里做什么。你是说argv[0]吗?

所以现在你只是呈现了一堆不工作的代码。