在php网页和后台脚本之间传递变量

问题描述:

我想在Windows的后台运行一个php脚本。在php网页和后台脚本之间传递变量

林寻找一种方式来传递他们之间的变量。基本上那是什么即时试图完成:

PHP页面:

session_start(); 
    $_SESSION['abc'] = 1 ;  
    $cmd = "c:\wamp\bin\php\php5.5.12\php -f c:\wamp\www\FinalProject\newEmptyPHP.php" ; 
    pclose(popen("start /B ".$cmd, 'r')); 
    while ($_SESSION['abc'] == 1) 
    { 
     sleep(1) ; 
    } 
    echo 'Done'; 

背景脚本:

session_start(); 
$_SESSION['abc'] = 0 ; 

即时通信开放给任何建议。

+0

Windows是一个操作系统,它更可能是你在浏览器中使用PHP? – 2015-03-31 19:54:09

+0

看看PHP套接字编程 – aergistal 2015-03-31 19:58:43

你应该执行这个传递VAR作为控制台调用的参数:

session_start(); 
    $_SESSION['abc'] = 1 ; 
    $cmd = "c:\wamp\bin\php\php5.5.12\php -f c:\wamp\www\FinalProject\newEmptyPHP.php " . $_SESSION['abc'] ; 
    /** ... */ 

之后,你将能够使用$ argv的VAR(http://php.net/manual/en/reserved.variables.argv.php

从newEmptyPHP.php得到论证

我认为你永远不会以这种方式更新会话,因为: 1)PHP在执行期间没有在$ _SESSION中监听外部更改。如果可能的话,这将是一个非常困难的维护和调试。 2)控制台中的脚本不会使用会话,因为会话只能由打开它的客户端访问(请参阅http://www.w3schools.com/php/php_sessions.asp) 但是...为什么需要使用popen从PHP调用PHP脚本?它会很慢。我建议在你的应用程序中构建你需要使用newEmptyPHP.php的功能。

+0

基本上我的目标是在后台运行一个exe文件,并在完成后收到一个信号。 – 2015-03-31 20:45:17

+0

你可以通过阅读popen [link](http://php.net/manual/en/function.popen.php)返回的流来完成。请注意后台进程足够快:它会锁定PHP执行。根据你在后台需要做什么,可能你应该寻找一种不同于PHP的解决方案(NodeJS可能是一个不错的选择)。 – gotardo 2015-04-02 10:23:55