Как я могу настроить сервер для более быстрого запуска моего PHP-скрипта? - PullRequest
0 голосов
/ 02 декабря 2010

У меня есть PHP-скрипт, который запускается в цикле x раз.Код очень минимален и выполняет проверки.Некоторые циклы будут выполняться в течение 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,00 ГГц Скорость процессора № 1:1995.120 МГц Размер кэш-памяти процессора № 1: 6144 КБ

Процессор № 2 Поставщик: GenuineIntel Процессор № 2 Имя: Процессор Intel® R Xeon® R E5405 @ 2,00 ГГц Скорость процессора № 2: 1995,120 МГц Процессор № 2размер кэш-памяти: 6144 КБ

Процессор № 3 Поставщик: GenuineIntel Процессор № 3 Имя: Процессор Intel® R Xeon® R E5405 @ 2,00 ГГц Скорость процессора № 3: 1995,120 МГц Размер кэша процессора № 3: 6144 КБ

Процессор № 4 Поставщик: GenuineIntel Процессор № 4 Имя:Процессор Intel (R) Xeon (R) E5405 с частотой 2,00 ГГц Частота процессора 4: 1995,120 МГц Размер кэша процессора 4: 6144 КБ

Процессор № 5 Поставщик: GenuineIntel Процессор № 5 Название: Intel (R) Xeon(R) CPU E5405 @ 2,00 ГГц Частота процессора 5: 1995,120 МГц Размер кэша процессора № 5: 6144 КБ

Процессор № 6 Поставщик: GenuineIntel Процессор № 6 Имя: Процессор Intel (R) Xeon (R) E5405@ 2,00 ГГц Частота процессора 6: 1995,120 МГц Размер кэша процессора № 6: 6144 КБ

Процессор № 7 Поставщик: GenuineIntel Процессор № 7 Имя: Процессор Intel® R Xeon® R E5405 @ Процессор 2,00 ГГц7-тактовая: 1995,120 МГц Размер кэша процессора № 7: 6144 КБ

Процессор № 8 Поставщик: GenuineIntel Процессор № 8 Название: Intel (R) Xeon (R) CPU E5405 @ 2,00 ГГц Скорость процессора № 8: 1995,120 МГцРазмер кэша процессора № 8: 6144 КБ

Информация о памяти

Память для аварийного ядра (от 0x0 до 0x0) вне допустимого диапазона Память: доступно 8302344k / 9175040k (код ядра 2176k)Зарезервировано 80272 тыс., Данные 901 тыс., Инициализация 228 тыс., 7466304 тыс.highmem)

Информация о системе

Linux server.myserver.com 2.6.18-194.17.1.el5PAE # 1 SMP Ср 29 сентября 13:31:51 EDT 2010i686 i686 i386 GNU / Linux

Физические диски

Устройство SCSI sda: 1952448512 512-байтовые сектора hdwr (999654 МБ) sda: защита от записи отключена sda: режим Sense: 03 00 00 08 SCSI-устройство sda: кэш диска: запись обратно SCSI-устройство sda: 1952448512 512-байтовые сектора hdwr (999654 МБ) sda: защита от записи отключена sda: Режим определения: 03 00 00 08 SCSI-устройство sda: кэш диска:Обратная запись SD 0: 1: 0: 0: Прикрепленный SCSI диск SDA 4: 0: 0: 0: Прикрепленный SCSI съемный диск SDB SD 0: 1: 0: 0: Прикрепленный SCSI универсальный тип SD4 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

Текущее использование диска

Размер используемой файловой системы Доступен Использовать% Mустановлено на / 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

Ответы [ 2 ]

1 голос
/ 05 июля 2011

Я не использовал это лично, но я подозреваю, что вам нужно изучить использование curl_multi * в PHP - это, кажется, позволяет вам выполнять несколько запросов одновременно.1004 *

Ваше узкое место почти наверняка будет устанавливать HTTP-соединения последовательно.AFAIK функции curl_multi_ * позволяют выполнять их параллельно.

1 голос
/ 02 декабря 2010

Используете ли вы базы данных, электронную почту, веб-сервисы или другие подобные компоненты? Как правило, производительность PHP-скрипта в наибольшей степени зависит от них.

Вы можете использовать инструмент профилирования, такой как Xdebug, чтобы проанализировать ваш скрипт и найти самые медленные области кода. Затем вы можете оптимизировать этот код (например, внутренние циклы) для повышения производительности.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...