简体   繁体   English

如何调整服务器以更快地运行PHP脚本?

[英]How can I adjust the server to run my PHP script quicker?

I have a PHP script which runs on a loop for x amount of times. 我有一个PHP脚本,该脚本在循环中运行了x次。 The code is very minimal and performs checks. 该代码非常少,并执行检查。 Some loops will run within 1 second of each other and it varies.. some loops will run with up to 8 seconds delay. 某些循环将在彼此之间的1秒钟内运行,并且有所不同。.某些循环将以最多8秒的延迟运行。

How or what can I adjust/tweak on the server (or instruct the manager of my dedicated server) to reduce the time between loops to milliseconds (or as quick as possible) rather than 1 to 8 seconds? 如何或在服务器上进行什么调整/调整(或指示我的专用服务器的管理员),以将循环之间的时间减少到毫秒(或尽可能快)而不是1到8秒?

Thank you! 谢谢!

PHP code 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++;   }        ?>

Processor Information 处理器信息

Processor #1 Vendor: GenuineIntel Processor #1 Name: Intel(R) Xeon(R) CPU E5405 @ 2.00GHz Processor #1 speed: 1995.120 MHz Processor #1 cache size: 6144 KB 处理器#1供应商:正版英特尔处理器#1名称:英特尔(R)至强(R)CPU E5405 @ 2.00GHz处理器#1速度:1995.120 MHz处理器#1缓存大小:6144 KB

Processor #2 Vendor: GenuineIntel Processor #2 Name: Intel(R) Xeon(R) CPU E5405 @ 2.00GHz Processor #2 speed: 1995.120 MHz Processor #2 cache size: 6144 KB 处理器#2供应商:正版英特尔处理器#2名称:英特尔(R)至强(R)CPU E5405 @ 2.00GHz处理器#2速度:1995.120 MHz处理器#2高速缓存大小:6144 KB

Processor #3 Vendor: GenuineIntel Processor #3 Name: Intel(R) Xeon(R) CPU E5405 @ 2.00GHz Processor #3 speed: 1995.120 MHz Processor #3 cache size: 6144 KB 处理器#3供应商:原装英特尔处理器#3名称:英特尔(R)至强(R)CPU E5405 @ 2.00GHz处理器#3速度:1995.120 MHz处理器#3高速缓存大小:6144 KB

Processor #4 Vendor: GenuineIntel Processor #4 Name: Intel(R) Xeon(R) CPU E5405 @ 2.00GHz Processor #4 speed: 1995.120 MHz Processor #4 cache size: 6144 KB 处理器#4供应商:正版英特尔处理器#4名称:英特尔(R)至强(R)CPU E5405 @ 2.00GHz处理器#4速度:1995.120 MHz处理器#4高速缓存大小:6144 KB

Processor #5 Vendor: GenuineIntel Processor #5 Name: Intel(R) Xeon(R) CPU E5405 @ 2.00GHz Processor #5 speed: 1995.120 MHz Processor #5 cache size: 6144 KB 处理器#5供应商:原装英特尔处理器#5名称:英特尔(R)至强(R)CPU E5405 @ 2.00GHz处理器#5速度:1995.120 MHz处理器#5高速缓存大小:6144 KB

Processor #6 Vendor: GenuineIntel Processor #6 Name: Intel(R) Xeon(R) CPU E5405 @ 2.00GHz Processor #6 speed: 1995.120 MHz Processor #6 cache size: 6144 KB 处理器#6供应商:正版英特尔处理器#6名称:英特尔(R)至强(R)CPU E5405 @ 2.00GHz处理器#6速度:1995.120 MHz处理器#6高速缓存大小:6144 KB

Processor #7 Vendor: GenuineIntel Processor #7 Name: Intel(R) Xeon(R) CPU E5405 @ 2.00GHz Processor #7 speed: 1995.120 MHz Processor #7 cache size: 6144 KB 处理器#7供应商:原装英特尔处理器#7名称:英特尔(R)至强(R)CPU E5405 @ 2.00GHz处理器#7速度:1995.120 MHz处理器#7高速缓存大小:6144 KB

Processor #8 Vendor: GenuineIntel Processor #8 Name: Intel(R) Xeon(R) CPU E5405 @ 2.00GHz Processor #8 speed: 1995.120 MHz Processor #8 cache size: 6144 KB 处理器#8供应商:原装英特尔处理器#8名称:英特尔(R)至强(R)CPU E5405 @ 2.00GHz处理器#8速度:1995.120 MHz处理器#8高速缓存大小:6144 KB

Memory Information 记忆体资讯

Memory for crash kernel (0x0 to 0x0) notwithin permissible range Memory: 8302344k/9175040k available (2176k kernel code, 80272k reserved, 901k data, 228k init, 7466304k highmem) 崩溃内核(0x0到0x0)的内存不在允许范围内内存:可用8302344k / 9175040k(2176k内核代码,80272k保留,901k数据,228k初始化,7466304k highmem)

System Information 系统信息

Linux server.myserver.com 2.6.18-194.17.1.el5PAE #1 SMP Wed Sep 29 13:31:51 EDT 2010 i686 i686 i386 GNU/Linux Linux server.myserver.com 2.6.18-194.17.1.el5PAE#1 SMP Wed Sep 29 13:31:51 EDT 2010 i686 i686 i386 GNU / Linux

Physical Disks 物理磁盘

SCSI device sda: 1952448512 512-byte hdwr sectors (999654 MB) sda: Write Protect is off sda: Mode Sense: 03 00 00 08 SCSI device sda: drive cache: write back SCSI device sda: 1952448512 512-byte hdwr sectors (999654 MB) sda: Write Protect is off sda: Mode Sense: 03 00 00 08 SCSI device sda: drive cache: write back sd 0:1:0:0: Attached scsi disk sda sd 4:0:0:0: Attached scsi removable disk sdb sd 0:1:0:0: Attached scsi generic sg4 type 0 sd 4:0:0:0: Attached scsi generic sg7 type 0 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

Current Memory Usage 当前内存使用情况

         total       used       free     shared    buffers     cached

Mem: 8306672 7887632 419040 0 508076 6496876 -/+ buffers/cache: 882680 7423992 Swap: 4095992 428 4095564 Total: 12402664 7888060 4514604 内存:8306672 7887632 419040 0 508076 6496876-/ +缓冲区/缓存:882680 7423992交换:4095992 428 4095564总数:12402664 7888060 4514604

Current Disk Usage 当前磁盘使用率

Filesystem Size Used Avail Use% Mounted on /dev/mapper/VolGroup00-LogVol00 898G 200G 653G 24% / /dev/sda1 99M 19M 76M 20% /boot none 4.0G 0 4.0G 0% /dev/shm /var/tmpMnt 4.0G 161M 3.6G 5% /tmp 已使用的文件系统大小可用百分比已安装在/ dev / mapper / VolGroup00-LogVol00 898G 200G 653G 24%/ / dev / sda1 99M 19M 76M 20%/ boot none 4.0G 0 4.0G 0%/ dev / shm / var / tmpMnt 4.0 G 161M 3.6G 5%/ tmp

Do you use databases, emails, web services, or any other similar component? 您是否使用数据库,电子邮件,Web服务或任何其他类似组件? Generally, the performance of a PHP script is most dependent on these. 通常,PHP脚本的性能最依赖于这些脚本。

You can use a profiling tool like Xdebug to analyse your script and find the slowest areas of code. 您可以使用Xdebug之类的分析工具来分析脚本并找到最慢的代码区域。 You can then optimise this code (eg inner loops) to improve performance. 然后,您可以优化此代码(例如,内部循环)以提高性能。

I've not used this personally, but I suspect you need to look into using the curl_multi* stuff in PHP - this appears to allow you to perform multiple requests at once. 我没有亲自使用它,但是我怀疑您需要研究使用PHP中的curl_multi *东西-这似乎允许您一次执行多个请求。

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

Your bottleneck will almost certainly be making the HTTP connections serially. 几乎可以肯定,您的瓶颈将是串行建立HTTP连接。 AFAIK the curl_multi_* functions will allow these to be performed in parallel. AFAIK curl_multi_ *函数将允许它们并行执行。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM