【问题标题】:How can I adjust the server to run my PHP script quicker?如何调整服务器以更快地运行我的 PHP 脚本?
【发布时间】:2011-05-18 22:26:27
【问题描述】:

我有一个循环运行 x 次的 PHP 脚本。 代码非常少并且执行检查。 一些循环将在 1 秒内运行,并且会有所不同.. 一些循环会以长达 8 秒的延迟运行。

我可以如何或如何在服务器上调整/调整(或指示我的专用服务器的管理员)以将循环之间的时间减少到毫秒(或尽可能快)而不是 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 名称:Intel(R) Xeon(R) CPU E5405 @ 2.00GHz 处理器 #1 速度:1995.120 MHz 处理器 #1 缓存大小:6144 KB

处理器 #2 供应商:GenuineIntel 处理器 #2 名称:Intel(R) Xeon(R) CPU E5405 @ 2.00GHz 处理器 #2 速度:1995.120 MHz 处理器 #2 缓存大小:6144 KB

处理器 #3 供应商:GenuineIntel 处理器 #3 名称:Intel(R) Xeon(R) CPU E5405 @ 2.00GHz 处理器 #3 速度:1995.120 MHz 处理器 #3 缓存大小:6144 KB

处理器 #4 供应商:GenuineIntel 处理器 #4 名称:Intel(R) Xeon(R) CPU E5405 @ 2.00GHz 处理器 #4 速度:1995.120 MHz 处理器 #4 缓存大小:6144 KB

处理器 #5 供应商:GenuineIntel 处理器 #5 名称:Intel(R) Xeon(R) CPU E5405 @ 2.00GHz 处理器 #5 速度:1995.120 MHz 处理器 #5 缓存大小:6144 KB

处理器 #6 供应商:GenuineIntel 处理器 #6 名称:Intel(R) Xeon(R) CPU E5405 @ 2.00GHz 处理器 #6 速度:1995.120 MHz 处理器 #6 缓存大小:6144 KB

处理器 #7 供应商:GenuineIntel 处理器 #7 名称:Intel(R) Xeon(R) CPU E5405 @ 2.00GHz 处理器 #7 速度:1995.120 MHz 处理器 #7 缓存大小:6144 KB

处理器 #8 供应商:GenuineIntel 处理器 #8 名称:Intel(R) Xeon(R) CPU E5405 @ 2.00GHz 处理器 #8 速度:1995.120 MHz 处理器 #8 缓存大小:6144 KB

内存信息

崩溃内核的内存(0x0 到 0x0)不在允许范围内 内存:8302344k/9175040k 可用(2176k 内核代码,80272k 保留,901k 数据,228k init,7466304k highmem)

系统信息

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

物理磁盘

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 generic sg7 type 0

当前内存使用情况

         total       used       free     shared    buffers     cached

Mem: 8306672 7887632 419040 0 508076 6496876 -/+ 缓冲区/缓存:882680 7423992 交换:4095992 428 4095564 总计:12402664 7888060 4514604

当前磁盘使用情况

Filesystem Size Used Avail Use% Mounted on /dev/mapper/VolGroup00-LogVol00 898G 200G 653G 24% / /dev/sda1 99M 19M 76M 20% /boot 无 4.0G 0 4.0G 0% /dev/shm /var/tmpMnt 4.0G 161M 3.6G 5% /tmp

【问题讨论】:

  • 需要更多细节。需要代码示例和服务器设置信息。
  • 添加服务器信息,稍后会添加代码

标签: php dedicated-server


【解决方案1】:

您是否使用数据库、电子邮件、网络服务或任何其他类似组件?一般来说,PHP 脚本的性能最依赖这些。

您可以使用 Xdebug 等分析工具来分析您的脚本并找出最慢的代码区域。然后,您可以优化此代码(例如内部循环)以提高性能。

【讨论】:

  • 谢谢。该脚本不连接到除 API 之外的任何东西。它将值传递给 API 并返回一个代码。除了 Xdebug 还能做些什么来提高性能?
  • @iCer:API 是什么?通过分析,您可以查看大部分时间是花在您的 PHP 代码还是 API 上。还有很多其他选项,但我建议先进行分析。
  • 它是一个域名注册API。刚刚下载了 Xdebug,不知道我应该用它做什么:/
【解决方案2】:

我没有亲自使用过这个,但我怀疑你需要考虑在 PHP 中使用 curl_multi* 的东西——这似乎允许你一次执行多个请求。

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

几乎可以肯定,您的瓶颈将是串行建立 HTTP 连接。 AFAIK curl_multi_* 函数将允许这些函数并行执行。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-02-08
    • 2015-05-08
    • 2019-06-12
    • 1970-01-01
    • 1970-01-01
    • 2016-03-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多