[英]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.