簡體   English   中英

如何在並行運行的腳本之間傳遞變量

[英]How to pass variables between scripts running in parallel

我在帶有PHP 5.3的Windows Server上運行IIS。 我有兩個腳本; 我們稱它們為Initiator.php和worker.php。 用戶調用initiator.php,並在此腳本中定義了一個變量。 我們稱之為$ input。 我想把這個$ input變量傳遞給worker.php像這樣:

$oShell = new COM('Wscript.Shell');
$oShell->Run("\"C:/Program Files (x86)/PHP/v5.3/php/worker.php -a $input",0,False);

在worker.php中,我有以下內容來拾取從Initiator.php傳遞的$ input變量。

$aCliOpts = getopt('a:');
$input_from_initiator = $aCliOpts['a'];

這很好。 Initiator.php的$ input變量已成功傳遞給worker.php,后者將其選中,initiator.php不斷變化。 但是,worker.php然后使用它自己的$ input_from_initiator變量,運行它自己的一些快速代碼,並創建第三個變量$ output_from_worker。 我需要這個變量initiator.php才能對其進行處理。 這就是我要掛斷電話的地方。

我嘗試將變量從worker.php傳遞回initiator.php,就像在開始時傳遞一個變量一樣,但這不起作用。 我也嘗試使用:

header('Location: initiator.php?var=value') 

使用HTTP GET參數,但無濟於事。

我的最后一招是worker.php將此變量的值寫入磁盤,然后從磁盤讀取initiator.php。 由於潛在的磁盤I / O,我不願意這樣做。 速度對於此腳本非常重要。

有兩個方法可以在內存中彼此之間傳遞變量嗎?

看看file_get_contents() http://php.net/file_get_contents ,您可以通過一個URL。 所以,你可以使用查詢字符串,如:

 $var = file_get_contents('http://site.tld/worker.php?input='.$input);

而在worker.php ,只是附和你的結果。

您在Windows上運行很可惜,因為* nix上的sys5擴展很棒!

您可以始終使用文件或數據庫等進行通信。

感謝您的幫助,盡管我最終做的事情與原始問題有所不同。 我試圖運行不同的cURL請求。 curl_multi_exec()最終對我來說很棒。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM