dostlar, salam. bu səhifdəki skripti optimallaşdırmaq istəyirəm. məzmun budur ki, milli bankın (mərkəzi bank? :)) valyuta indeksləməsinə başladığı 25 noyabr 1993-cü ildən bu günə qədər olan bütün valyuta məzənnələrini götürüb bazaya qeyd etmək istəyirəm. xml faylların parsinqi üçün aşağıdakı kosu yazdım.
</p><p><?php</p><p>$beginning = "25.11.1993";<br /> $ending = date("d.m.Y");<br /> $date = $beginning;</p><p><br />while(strtotime($date) <= strtotime($ending))<br /> {<br /> echo "$date<br />"; <br /> $date = date ("d.m.Y", strtotime("+1 day", strtotime($date)));</p><p>$url = "http://www.cbar.az/currencies/" .$date. ".xml";</p><p><br />$doc = new DOMDocument();</p><p>$doc->load($url);</p><p>$valyutalar = $doc->getElementsByTagName( "Valute" );</p><p><br />foreach( $valyutalar as $valyuta ) <br />{ <br /> $nominal = $valyuta->getElementsByTagName( "Nominal" ); <br /> $nom = $nominal->item(0)->nodeValue;</p><p>$code = trim($valyuta->getAttribute('Code'));</p><p><br /> $value = $valyuta->getElementsByTagName( "Value" ); <br /> $val = $value->item(0)->nodeValue; <br /><br />//echo "<b>".$code." - " .$val. "AZN\n</b><br>-----------------------<br>";</p><p>/*sql */<br /><br />}<br />}<br /> ?></p><p>
aydın məsələdir ki, skripti bir dəfə işə salmaqla bu qədər məlumatın parsinqini aparmaq utopik bir şeydir (ən azı 6000 iş günü var) – hardasa bir yerdə, server bu qədər məlumatı emal etməyi dayandıracaq. bunu əməliyyatı php ilə optimal variantda necə edə bilərəm?
(php.ini-də max execution limit-i -1 etdim, lakin bir müddət sonra yenə dayandı)
Verilmiş cavablar və yazılan şərhlər (4 cavab var)
0
kod əlavəsi.
p.s. sual yazarkən, teqinin içindəki məlumatlar niyə belə əndrəbadi görünür?
0
Yəqin teqi düzgün qoymursunuz. Sual və şərh kod görüntüsü tamamilə eyni sistemlə işləyir.
0
Həll üçün bir çox metodrlar düşünmək olar. Məsələn
1. Server Cron Job qurmaq və hər dəqiqədə bir və bir neçə tarixi emal etmək. Bir neçə saata və ya 1-2 günə nəticə hazır olacaq.
2. Sadəcə Ajax kodu yazıb səhifəni brauzerdə açıq qoymaq, o səhifə hər X saniyədə bir yeni request göndərsin DATE parametri ilə, hər requestdə date bir gün çoxalsın. Belədə də bir neçə saata nəticə hazır olar.
1
.htaccess-də php_value max_execution_time 86400 yoxlamaq olar. Alınmasa serverdə axtarmaq lazımdı həlli. Bəzən Nginx + Apache serverlərdə nginx.conf -da limit olur. Bu halda proxy_read_timeout artırmaq lazımdır.
Sual verin
Cavab verin