2015-03-31 88 views
0

我想在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

回答

0

你應該執行這個傳遞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