-1

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ベンダー:本物のIntelプロセッサー#1名前:Intel(R)Xeon(R)CPU E5405 @ 2.00GHzプロセッサー#1速度:1995.120 MHzプロセッサー#1キャッシュサイズ:6144 KB

プロセッサー#2ベンダー:本物のIntelプロセッサー#2名前:Intel(R)Xeon(R)CPU E5405 @ 2.00GHzプロセッサー#2速度:1995.120 MHzプロセッサー#2キャッシュサイズ:6144 KB

プロセッサー#3ベンダー:本物のIntelプロセッサー#3名前:Intel(R)Xeon(R)CPU E5405 @ 2.00GHzプロセッサー#3速度:1995.120 MHzプロセッサー#3キャッシュサイズ:6144 KB

プロセッサー#4ベンダー:本物のIntelプロセッサー#4名前:Intel(R)Xeon(R)CPU E5405 @ 2.00GHzプロセッサー#4速度:1995.120 MHzプロセッサー#4キャッシュサイズ:6144 KB

プロセッサー#5ベンダー:本物のIntelプロセッサー#5名前:Intel(R)Xeon(R)CPU E5405 @ 2.00GHzプロセッサー#5速度:1995.120 MHzプロセッサー#5キャッシュサイズ:6144 KB

プロセッサー#6ベンダー:本物のIntelプロセッサー#6名前:Intel(R)Xeon(R)CPU E5405 @ 2.00GHzプロセッサー#6速度:1995.120 MHzプロセッサー#6キャッシュサイズ:6144 KB

プロセッサー#7ベンダー:本物のIntelプロセッサー#7名前:Intel(R)Xeon(R)CPU E5405 @ 2.00GHzプロセッサー#7速度:1995.120 MHzプロセッサー#7キャッシュサイズ:6144 KB

プロセッサー#8ベンダー:本物のIntelプロセッサー#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リムーバブルディスクsdbsd0:1:0:0:アタッチされたscsiジェネリックsg4タイプ0 sd 4:0:0:0:アタッチされたscsiジェネリックsg7タイプ0

現在のメモリ使用量

         total       used       free     shared    buffers     cached

Mem:8306672 7887632 419040 0 508076 6496876-/ +バッファ/キャッシュ:882680 7423992スワップ:4095992 428 4095564合計:12402664 7888060 4514604

現在のディスク使用量

使用されたファイルシステムのサイズ使用率使用率/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

4

2 に答える 2

1

データベース、電子メール、Web サービス、またはその他の同様のコンポーネントを使用していますか? 一般に、PHP スクリプトのパフォーマンスはこれらに最も依存します。

Xdebug などのプロファイリング ツールを使用して、スクリプトを分析し、コードの最も遅い領域を見つけることができます。次に、このコード (内側のループなど) を最適化して、パフォーマンスを向上させることができます。

于 2010-12-02T05:35:17.413 に答える
1

私はこれを個人的に使用したことはありませんが、PHP で curl_multi* を使用することを検討する必要があると思われます - これにより、一度に複数の要求を実行できるようです。

http://php.net/manual/en/function.curl-multi-init.phpを参照してください。

ボトルネックはほぼ確実に、HTTP 接続を連続して行っています。私の知る限り、curl_multi_* 関数を使用すると、これらを並行して実行できます。

于 2011-07-05T10:12:48.077 に答える