pbootcms网站模板|日韩1区2区|织梦模板||网站源码|日韩1区2区|jquery建站特效-html5模板网

<small id='Zoo9j'></small><noframes id='Zoo9j'>

  • <legend id='Zoo9j'><style id='Zoo9j'><dir id='Zoo9j'><q id='Zoo9j'></q></dir></style></legend>
      <bdo id='Zoo9j'></bdo><ul id='Zoo9j'></ul>
  • <i id='Zoo9j'><tr id='Zoo9j'><dt id='Zoo9j'><q id='Zoo9j'><span id='Zoo9j'><b id='Zoo9j'><form id='Zoo9j'><ins id='Zoo9j'></ins><ul id='Zoo9j'></ul><sub id='Zoo9j'></sub></form><legend id='Zoo9j'></legend><bdo id='Zoo9j'><pre id='Zoo9j'><center id='Zoo9j'></center></pre></bdo></b><th id='Zoo9j'></th></span></q></dt></tr></i><div class="5bfv7xb" id='Zoo9j'><tfoot id='Zoo9j'></tfoot><dl id='Zoo9j'><fieldset id='Zoo9j'></fieldset></dl></div>

        <tfoot id='Zoo9j'></tfoot>

        一次運行多個 exec 命令(但要等待最后一個完成

        Run multiple exec commands at once (But wait for the last one to finish)(一次運行多個 exec 命令(但要等待最后一個完成))

              <bdo id='Mb155'></bdo><ul id='Mb155'></ul>
                <tbody id='Mb155'></tbody>
            • <legend id='Mb155'><style id='Mb155'><dir id='Mb155'><q id='Mb155'></q></dir></style></legend>

              1. <i id='Mb155'><tr id='Mb155'><dt id='Mb155'><q id='Mb155'><span id='Mb155'><b id='Mb155'><form id='Mb155'><ins id='Mb155'></ins><ul id='Mb155'></ul><sub id='Mb155'></sub></form><legend id='Mb155'></legend><bdo id='Mb155'><pre id='Mb155'><center id='Mb155'></center></pre></bdo></b><th id='Mb155'></th></span></q></dt></tr></i><div class="zn7lhr7" id='Mb155'><tfoot id='Mb155'></tfoot><dl id='Mb155'><fieldset id='Mb155'></fieldset></dl></div>

                • <small id='Mb155'></small><noframes id='Mb155'>

                  <tfoot id='Mb155'></tfoot>
                • 本文介紹了一次運行多個 exec 命令(但要等待最后一個完成)的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!

                  問題描述

                  我環顧四周,但似乎找不到任何人正試圖完全按照我的意愿行事.

                  I've looked around for this and I can't seem to find anyone who is trying to do exactly what I am.

                  我有通過 _POST 請求傳遞給我的函數的信息.基于該數據,我運行 exec 命令來運行 TCL 腳本一定次數(使用不同的參數,基于 post 變量).現在,我在 foreach 中有 exec,所以這需要永遠運行(TCL 腳本需要 15 秒左右才能返回,所以如果我需要運行它 100 次,我有一點問題).這是我的代碼:

                  I have information that is passed in to my function via a _POST request. Based on that data, I run an exec command to run a TCL script a certain number of times (with different parameters, based on the post variable). Right now, I have the exec in a foreach so this takes forever to run (the TCL script takes 15 or so seconds to come back, so if I need to run it 100 times, I have a bit of an issue). Here is my code:

                      public function executeAction(){
                      //code to parse the _POST variable into an array called devices
                  
                      foreach($devices as $devID){
                          exec("../path/to/script.tcl -parameter1 ".$device['param1']." -parameter2 ".$device['param2'], $execout[$devID]);
                      }
                      print_r($execout);
                  }
                  

                  顯然,這段代碼只是刪除了大塊的摘錄,但希望它足以證明我正在嘗試做的事情.

                  Obviously this code is just an excerpt with big chunks removed, but hopefully it's enough to demonstrate what I'm trying to do.

                  我需要一次運行所有的 exec,我需要等待它們全部完成后再返回.我還需要存儲在名為 $execout 的數組中的所有腳本的輸出.

                  I need to run all of the execs at once and I need to wait for them all to complete before returning. I also need the output of all of the scripts stored in the array called $execout.

                  有什么想法嗎?

                  謝謝!!!

                  推薦答案

                  如果將 exec() 調用放在單獨的腳本中,則可以使用 curl_multi_exec().這樣,您可以在單獨的請求中進行所有調用,以便它們可以同時執行.輪詢 &$still_running 以查看所有請求何時完成,之后您可以收集每個請求的結果.

                  If you put your exec() call in a separate script, you can call that external script multiple times in parallel using curl_multi_exec(). That way, you'd make all the calls in separate requests, so they could execute simultaneously. Poll &$still_running to see when all requests have finished, after which you can collect the results from each.

                  更新:這里是 一篇博文 詳細說明了我所描述的內容.

                  Update: Here's a blog post detailing exactly what I'm describing.

                  根據上面鏈接的博客文章,我整理了以下示例.

                  Based on the blog post linked above, I put together the following example.

                  腳本并行運行:

                  // waitAndDate.php
                  
                  <?php
                  sleep((int)$_GET['time']);
                  printf('%d secs; %s', $_GET['time'], shell_exec('date'));
                  

                  腳本并行調用:

                  // multiExec.php
                  
                  <?php
                  $start = microtime(true);
                  
                  $mh = curl_multi_init();
                  $handles = array();
                  
                  // create several requests
                  for ($i = 0; $i < 5; $i++) {
                      $ch = curl_init();
                  
                      $rand = rand(5,25); // just making up data to pass to script
                      curl_setopt($ch, CURLOPT_URL, "http://domain/waitAndDate.php?time=$rand");
                      curl_setopt($ch, CURLOPT_HEADER, 0);
                      curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
                      curl_setopt($ch, CURLOPT_TIMEOUT, 30);
                  
                      curl_multi_add_handle($mh, $ch);
                      $handles[] = $ch;
                  }
                  
                  // execute requests and poll periodically until all have completed
                  $isRunning = null;
                  do {
                      curl_multi_exec($mh, $isRunning);
                      usleep(250000);
                  } while ($isRunning > 0);
                  
                  // fetch output of each request
                  $outputs = array();
                  for ($i = 0; $i < count($handles); $i++) {
                      $outputs[$i] = trim(curl_multi_getcontent($handles[$i]));
                      curl_multi_remove_handle($mh, $handles[$i]);
                  }
                  
                  curl_multi_close($mh);
                  
                  print_r($outputs);
                  printf("Elapsed time: %.2f seconds
                  ", microtime(true) - $start);
                  

                  這是我運行幾次時收到的一些輸出:

                  Here is some output I received when running it a few times:

                  Array
                  (
                      [0] => 8 secs; Mon Apr  2 19:01:33 UTC 2012
                      [1] => 8 secs; Mon Apr  2 19:01:33 UTC 2012
                      [2] => 18 secs; Mon Apr  2 19:01:43 UTC 2012
                      [3] => 11 secs; Mon Apr  2 19:01:36 UTC 2012
                      [4] => 8 secs; Mon Apr  2 19:01:33 UTC 2012
                  )
                  Elapsed time: 18.36 seconds
                  
                  Array
                  (
                      [0] => 22 secs; Mon Apr  2 19:02:33 UTC 2012
                      [1] => 9 secs; Mon Apr  2 19:02:20 UTC 2012
                      [2] => 8 secs; Mon Apr  2 19:02:19 UTC 2012
                      [3] => 11 secs; Mon Apr  2 19:02:22 UTC 2012
                      [4] => 7 secs; Mon Apr  2 19:02:18 UTC 2012
                  )
                  Elapsed time: 22.37 seconds
                  
                  Array
                  (
                      [0] => 5 secs; Mon Apr  2 19:02:40 UTC 2012
                      [1] => 18 secs; Mon Apr  2 19:02:53 UTC 2012
                      [2] => 7 secs; Mon Apr  2 19:02:42 UTC 2012
                      [3] => 9 secs; Mon Apr  2 19:02:44 UTC 2012
                      [4] => 9 secs; Mon Apr  2 19:02:44 UTC 2012
                  )
                  Elapsed time: 18.35 seconds
                  

                  希望有幫助!

                  一方面要注意:確保您的 Web 服務器可以處理這么多并行請求.如果它按順序為它們提供服務,或者只能同時提供很少的服務,則這種方法幾乎沒有收益或沒有收益.:-)

                  One side note: make sure your web server can process this many parallel requests. If it serves them sequentially or can only serve very few simultaneously, this approach gains you little or nothing. :-)

                  這篇關于一次運行多個 exec 命令(但要等待最后一個完成)的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網!

                  【網站聲明】本站部分內容來源于互聯網,旨在幫助大家更快的解決問題,如果有圖片或者內容侵犯了您的權益,請聯系我們刪除處理,感謝您的支持!

                  相關文檔推薦

                  Deadlock exception code for PHP, MySQL PDOException?(PHP、MySQL PDOException 的死鎖異常代碼?)
                  PHP PDO MySQL scrollable cursor doesn#39;t work(PHP PDO MySQL 可滾動游標不起作用)
                  PHP PDO ODBC connection(PHP PDO ODBC 連接)
                  Using PDO::FETCH_CLASS with Magic Methods(使用 PDO::FETCH_CLASS 和魔術方法)
                  php pdo get only one value from mysql; value that equals to variable(php pdo 只從 mysql 獲取一個值;等于變量的值)
                  MSSQL PDO could not find driver(MSSQL PDO 找不到驅動程序)

                    • <i id='1Mn54'><tr id='1Mn54'><dt id='1Mn54'><q id='1Mn54'><span id='1Mn54'><b id='1Mn54'><form id='1Mn54'><ins id='1Mn54'></ins><ul id='1Mn54'></ul><sub id='1Mn54'></sub></form><legend id='1Mn54'></legend><bdo id='1Mn54'><pre id='1Mn54'><center id='1Mn54'></center></pre></bdo></b><th id='1Mn54'></th></span></q></dt></tr></i><div class="zdztxd7" id='1Mn54'><tfoot id='1Mn54'></tfoot><dl id='1Mn54'><fieldset id='1Mn54'></fieldset></dl></div>

                      <small id='1Mn54'></small><noframes id='1Mn54'>

                            <tbody id='1Mn54'></tbody>
                        1. <legend id='1Mn54'><style id='1Mn54'><dir id='1Mn54'><q id='1Mn54'></q></dir></style></legend><tfoot id='1Mn54'></tfoot>
                            <bdo id='1Mn54'></bdo><ul id='1Mn54'></ul>
                          • 主站蜘蛛池模板: 高空重型升降平台_高空液压举升平台_高空作业平台_移动式升降机-河南华鹰机械设备有限公司 | 德国UST优斯特氢气检漏仪-德国舒赐乙烷检测仪-北京泽钏 | 成都离婚律师|成都结婚律师|成都离婚财产分割律师|成都律师-成都离婚律师网 | IIS7站长之家-站长工具-爱网站请使用IIS7站长综合查询工具,中国站长【WWW.IIS7.COM】 | 不锈钢闸阀_球阀_蝶阀_止回阀_调节阀_截止阀-可拉伐阀门(上海)有限公司 | 江西自考网| 蔡司三坐标-影像测量机-3D扫描仪-蔡司显微镜-扫描电镜-工业CT-ZEISS授权代理商三本工业测量 | 无压烧结银_有压烧结银_导电银胶_导电油墨_导电胶-善仁(浙江)新材料 | 自恢复保险丝_贴片保险丝_力特保险丝_Littelfuse_可恢复保险丝供应商-秦晋电子 | 北京办公室装修,办公室设计,写字楼装修-北京金视觉装饰工程公司 北京成考网-北京成人高考网 | 科普仪器菏泽市教育教学仪器总厂 | 生物风-销售载体,基因,质粒,ATCC细胞,ATCC菌株等,欢迎购买-百风生物 | 加气混凝土砌块设备,轻质砖设备,蒸养砖设备,新型墙体设备-河南省杜甫机械制造有限公司 | 查分易-成绩发送平台官网 | 防水接头-电缆防水接头-金属-电缆密封接头-不锈钢电缆接头 | 螺杆真空泵_耐腐蚀螺杆真空泵_水环真空泵_真空机组_烟台真空泵-烟台斯凯威真空 | B2B网站_B2B免费发布信息网站_B2B企业贸易平台 - 企资网 | 深圳富泰鑫五金_五金冲压件加工_五金配件加工_精密零件加工厂 | 工业制氮机_psa制氮机厂家-宏骁智能装备科技江苏有限公司 | 执业药师报名时间,报考条件,考试时间-首页入口 | 干粉砂浆设备_干混砂浆生产线_腻子粉加工设备_石膏抹灰砂浆生产成套设备厂家_干粉混合设备_砂子烘干机--郑州铭将机械设备有限公司 | 北京网站建设公司_北京网站制作公司_北京网站设计公司-北京爱品特网站建站公司 | 智能型高压核相仪-自动开口闪点测试仪-QJ41A电雷管测试仪|上海妙定 | 天津仓储物流-天津电商云仓-天津云仓一件代发-博程云仓官网 | 杭州月嫂技术培训服务公司-催乳师培训中心报名费用-产后康复师培训机构-杭州优贝姆健康管理有限公司 | 德国EA可编程直流电源_电子负载,中国台湾固纬直流电源_交流电源-苏州展文电子科技有限公司 | 一体化污水处理设备-一体化净水设备-「山东梦之洁水处理」 | 99文库_实习生实用的范文资料文库站 | 天空彩票天下彩,天空彩天空彩票免费资料,天空彩票与你同行开奖,天下彩正版资料大全 | 威实软件_软件定制开发_OA_OA办公系统_OA系统_办公自动化软件 | 铝单板_铝窗花_铝单板厂家_氟碳包柱铝单板批发价格-佛山科阳金属 | 轻型地埋电缆故障测试仪,频响法绕组变形测试仪,静荷式卧式拉力试验机-扬州苏电 | 好杂志网-首页| 防水套管-柔性防水套管-刚性防水套管-上海执品管件有限公司 | 空气能采暖,热泵烘干机,空气源热水机组|设备|厂家,东莞高温热泵_正旭新能源 | 精密五金冲压件_深圳五金冲压厂_钣金加工厂_五金模具加工-诚瑞丰科技股份有限公司 | TTCMS自助建站_网站建设_自助建站_免费网站_免费建站_天天向上旗下品牌 | 江苏全风,高压风机,全风环保风机,全风环形高压风机,防爆高压风机厂家-江苏全风环保科技有限公司(官网) | 无缝方管|无缝矩形管|无缝方矩管|无锡方管厂家| 硫化罐_蒸汽硫化罐_大型硫化罐-山东鑫泰鑫智能装备有限公司 | 深圳办公室装修,办公楼/写字楼装修设计,一级资质 - ADD写艺 |