Може ли някакси да ускоря работата на това чудо

t0shk0

Registered
Имам един код който си писах ама има проблем :)
Бачка доста бавно. Някой има ли идея как да го направя поне малко по бърз..
PHP:
<table cellpadding="0" cellspacing="0" border="0" width="100%"><?php
                                        $count = 1;
                                        while ($count <= 5) {
                                            $url = "http://twitter.com/statuses/user_timeline/24934546.xml?count=$count";
                                            $xml = simplexml_load_file($url);
                                            foreach ($xml->status as $status) {
                                                foreach ($status->user as $user) {
                                                    $name = $user->screen_name;
                                                    $avatar = $user->profile_image_url;
                                                }
                                            }
                                            foreach ($xml->status as $status) {
                                                $text = $status->text;
                                                $user = $status->in_reply_to_screen_name;
                                                $time = $status->created_at;
                                            }
                                            print "<tr><td style='vertical-align: top;'>" . $text . "</td></tr><tr><td colspan='1'><span style='color: #888; font-size: 10px;'>" . $time . "</span></td></tr><tr><td><span style='color: #bbb;'>------------------------------------------------------------------------------</span></td></tr>";
                                            $count++;
                                        }
                                        ?>
                                    </table>
 
Може би това зависи от хоста ти или сървъра на туитър (в което малко се съмнявам)
:)
 
Код:
<table cellpadding="0" cellspacing="0" border="0" width="100%"><?php

                                        $count = 1;

                                            $url = "http://twitter.com/statuses/user_timeline/24934546.xml?count=5";

                                            $xml = simplexml_load_file($url);

                                        while ($count <= 5) {

                                            foreach ($xml->status as $status) {

                                                foreach ($status->user as $user) {

                                                    $name = $user->screen_name;

                                                    $avatar = $user->profile_image_url;

                                                }

                                            }

                                            foreach ($xml->status as $status) {

                                                $text = $status->text;

                                                $user = $status->in_reply_to_screen_name;

                                                $time = $status->created_at;

                                            }

                                            print "<tr><td style='vertical-align: top;'>" . $text . "</td></tr><tr><td colspan='1'><span style='color: #888; font-size: 10px;'>" . $time . "</span></td></tr><tr><td><span style='color: #bbb;'>------------------------------------------------------------------------------</span></td></tr>";

                                            $count++;

                                        }

                                        ?>

                                    </table>
XML го чети веднъж.
 
Като го направя така ще ми показва xml-infoto само за count=5 , а от 1 до 4 няма да ги извежда
 
На мен ми се случи наскоро да правя сайт, който да зарежда около 500 външни страници в рамките на 15 минути.
В този случай единственият шанс за бърза работа е AJAX. Не товари особено много, не изисква процесорно време, защото всичко се обработва отделно и не затормозява сървъра.
Трябва самият файл да взима $_GET["count"] и в отделен файл да заредиш с AJAX file.php?count=1 и така до 5. :)
П.С.: Ако е многоядрен сървър, тъкмо ще се възползваш от възможностите му. ;)
 
Точно това си мислех преди малко, но се чудех дали ще стане. Мерси за предложението сега ще пробвам ;)
 
Само внимавай със синхронизацията, защото е възможно да зареди 2-рия файл преди 1-вия. Затова си подреди 5 дива и слагай върнатото от AJAX-а в съответният див. :)
Edit: ще ти го обясня като код
[js]
function ajaxLoad(count) {
var ajax=new XMLHttpRequest();
ajax.open(...);
ajax.id=count;
ajax.onreadystatechange=function() {
if(ajax.readyState==4)
document.getElementById("div"+this.id).innerHTML=ajax.responseText;
}
ajax.send(null);
}
[/js]
 
Извинявай ама count, променливата не служи ли това колко резултата да ти върне?

Мда, прав съм, стига глупости с тия аякси и подобни простотии.Пича чете 5 пъти един и същ XML от нета, как да е бързо?

Като го четем 1 път :)

Ето и кода
Код:
<table cellpadding="0" cellspacing="0" border="0" width="100%"><?php

                                        $count = 1;

                                            $url = "http://twitter.com/statuses/user_timeline/24934546.xml?count=5";

                                            $sxml = simplexml_load_file($url);

											foreach($sxml->children() as $status) {

                                            print "<tr><td style='vertical-align: top;'>" . $status->text . "</td></tr><tr><td colspan='1'><span style='color: #888; font-size: 10px;'>" . $status->created_at . "</span></td></tr><tr><td><span style='color: #bbb;'>------------------------------------------------------------------------------</span></td></tr>";

                                            }

                                        

                                        ?>

                                    </table>
 

Back
Горе