2010-12-02 41 views
-1

我有一個PHP腳本,它運行在x次循環上。代碼是非常小的,並執行檢查。 一些循環會在彼此的1秒鐘內運行,並且它會變化..一些循環會以高達​​8秒的延遲運行。如何調整服務器以更快地運行我的PHP腳本?

我可以在服務器上調整/調整(或指導我的專用服務器的管理器)以將環路之間的時間縮短到毫秒(或儘可能快)而不是1到8秒?

謝謝!

PHP代碼

<style type="text/css"> 
#check { font: Arial, Helvetica, sans-serif; font-size: 12px; margin-bottom: 40px; } 
.red { color: #C00; } 
.green { color: #060; } 
</style> 

<?php  date_default_timezone_set('Australia/Brisbane'); $var1 = "variable";  $var2 = 1;  $var3=="no"; 
       while ($var2 <= 50)  { 

         $sApiUrl = "https://www.apiurl.com/"; 

         $aParams = Array(
            'uid'  => "user", 
            'pw'  => "key",  
            'command' => "command",  
            'sld'  => "main",   
            'tld'  => "ext");   


         $oCurl = curl_init(); 
         curl_setopt($oCurl, CURLOPT_URL, $sApiUrl); 
         curl_setopt($oCurl, CURLOPT_POST, 1); 
         curl_setopt($oCurl, CURLOPT_POSTFIELDS, $aParams); 
         curl_setopt($oCurl, CURLOPT_RETURNTRANSFER, true); 
         curl_setopt($oCurl, CURLOPT_SSL_VERIFYPEER, false); 
         $sResponse = curl_exec($oCurl); 
         curl_close($oCurl); 


         $oOutput = new SimpleXmlElement($sResponse); 


         foreach ($oOutput as $v1) 
          { 
          foreach ($v1 as $v2) 
          { 
           foreach ($v2 as $v3) 
           { 
            foreach ($v3 as $v4=>$temp) 
            { 
             if($v4=="text") 
              $var4 = $temp; 
              if($var4=="true") 
               {           
                $aParams = Array(
                'uid'  => "user", 
                'pw'  => "key", 
                'command' => "command", 
                'sld'  => "main",  
                'tld'  => "ext", 
                'dosomething' => "yes");  


                $oCurl = curl_init(); 
                curl_setopt($oCurl, CURLOPT_URL, $sApiUrl); 
                curl_setopt($oCurl, CURLOPT_POST, 1); 
                curl_setopt($oCurl, CURLOPT_POSTFIELDS, $aParams); 
                curl_setopt($oCurl, CURLOPT_RETURNTRANSFER, true); 
                curl_setopt($oCurl, CURLOPT_SSL_VERIFYPEER, false); 
                $sResponse = curl_exec($oCurl); 
                curl_close($oCurl); 

                $var3=="yes"; 
               }       
            } 
           } 
          } 
          }   $checktime = date('h:i:s A');       echo "<div id=\"check\">$checktime, checked $var1<br>";   if ($var4=="true")   echo "<div class=\"green\"> $var4";   else   echo "<div class=\"red\"> $var4"; 
       if ($var3=="yes")   echo " and yes"; echo "</div></div>";  $var3=="no"; $loops++; }  ?> 

處理器信息

處理器#1供應商:GenuineIntel 處理器#1名稱:英特爾(R)至強(R)CPU E5405 @ 2.00GHz 處理器#1速度:1995.120MHz 處理器#1高速緩存大小:6144KB

處理器#2供應商:GenuineIntel 處理器#2名稱:英特爾(R)至強(R)CPU E5405 @ 2.00GHz 處理器#2速度:1995.120兆赫 處理器#2的高速緩存大小:6144 KB

處理器#3廠商:GenuineIntel 處理器#3名稱:英特爾(R)至強(R)CPU E5405 @ 2.00GHz 處理器#3速度:1995.120兆赫 處理器#3的高速緩存大小:6144 KB

處理器#4供應商:GenuineIntel 處理器#4名稱:Intel(R)Xeon(R)CPU E5405 @ 2.00GHz 處理器#4速度:1995.120 MHz 處理器#4高速緩存大小:6144 KB

處理器#5供應商:GenuineIntel 處理器#5名稱:英特爾(R)至強(R)CPU E5405 @ 2.00GHz 處理器#5速度:1995.120兆赫 處理器#5緩存大小:6144 KB

處理器#6供應商:GenuineIntel 處理器#6名稱:英特爾(R)至強(R)CPU E5405 @ 2.00GHz 處理器#6速度:1995.120兆赫 處理器#6的高速緩存大小:6144 KB

處理器#7供應商:GenuineIntel 處理器#7名稱:Intel(R)Xeon(R)CPU E5405 @ 2.00GHz 處理器#7速度:1995.120兆赫 處理器#7的高速緩存大小:6144 KB

處理器#8供應商:GenuineIntel 處理器#8名稱:英特爾(R)至強(R)CPU E5405 @ 2.00GHz 處理器#8速度:1995年。120兆赫 處理器#8的高速緩存大小:6144 KB

內存信息

存儲器進行崩潰內核(0x0到爲0x0)notwithin容許範圍 內存:8302344k/9175040k可用(2176k內核代碼,80272k保留, 901k數據,228K的init,7466304k HIGHMEM)

系統信息

的Linux server.myserver.com 2.6.18-194.17.1.el5PAE#1 SMP星期三13年9月29日:3 1:51 EDT 2010的i686的i686 i386的GNU/Linux的

物理磁盤

SCSI設備SDA:1952448512 512字節HDWR扇區(999654 MB) SDA:寫保護處於關閉狀態 SDA:模式檢測: 03 00 00 08 SCSI設備SDA:驅動器高速緩存:回寫 SCSI設備SDA:1952448512 512字節HDWR行業(999654 MB) SDA:寫保護已關閉 SDA:模式檢測:03 00 00 08 SCSI設備SDA :驅動器緩存:回寫 sd 0:1:0:0:附加的scsi磁盤sda sd 4:0:0:0:連接SCSI可移動磁盤SDB SD 0:1:0:0:連接SCSI通用SG4類型0 SD 4:0:0:0:連接SCSI通用SG7類型0

當前內存使用

  total  used  free  shared buffers  cached 

紀念品:8306672 7887632 419040 0 508076 6496876 -/+緩衝區/緩存:882680 7423992 交換:4095992 428 4095564 總:12402664 7888060 4514604

當前磁盤利用率

文件系統容量已用可用已用%掛載 的/ dev /映射器/的VolGroup00-LogVol00的 898G 200G 653G 24%/ 的/ dev/sda1的99M 19M 76M 20%/啓動 無4.0G 0 4.0G 0%/ dev/shm /var/tmpMnt 4.0G 161M 3.6G 5%/ tmp

+1

需要更多的細節。需要代碼示例和服務器設置信息。 – 2010-12-02 05:32:40

+0

添加服務器信息,不久將添加代碼 – iCeR 2010-12-02 05:51:11

回答

1

您是否使用數據庫,電子郵件,Web服務或任何其他類似的組件?通常,PHP腳本的性能最依賴於這些腳本。

您可以使用像Xdebug這樣的分析工具來分析腳本並查找最慢的代碼區域。然後,您可以優化此代碼(例如內部循環)以提高性能。

1

我沒有親自使用過,但我懷疑你需要考慮在PHP中使用curl_multi *這個東西 - 這似乎允許你一次執行多個請求。

http://php.net/manual/en/function.curl-multi-init.php

你的瓶頸幾乎肯定會連續進行的HTTP連接。 AFAIK curl_multi_ *函數將允許它們並行執行。

相關問題