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

我有一个php脚本,它将数据发送到另一个脚本并异步处理(至少我希望得到类似的结果)。下面是名为.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);

    }

}
标题中给出了我的担忧,如下所示:

  • 通过关闭文件操作(如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>