Einzelnen Beitrag anzeigen
  #1  
Alt 25.04.2009, 14:35:30
JakobD JakobD ist offline
Anfänger
 
Registriert seit: Apr 2009
Alter: 30
Beiträge: 15
Performance verbessern

Ich arbeite grade an einem Projekt. (Es ist auch schon veröffentlicht)
Wenn ihr mal auf die Seite geht werdet ihr verstehen worum es ungefähr geht. Ich hoffe ihr kennt Twitter und StudiVZ oder so ein bisschen.

Mein Projekt besteht eigentlich aus einem Webinterface, einer MySQL-Datenbank mit den ganzen Benutzerdaten und einem Skript, dass die Hauptarbeit macht und eben so jede Viertelstunde mit nem Cronjob dann ausgeführt wird.

Leider habe ich jetzt bereits 200 Nutzer und es werden mehr. Und irgendwie braucht das PHP-Skript natürlich immer länger und länger. Dazu kommt, dass es stehen bleibt, wenn es auf einen Nutzer stößt, der falsche Daten angegeben hat.

Also dachte ich mir, schreibste das mal neu. Das Problem mit dem anhalten bei falschen Daten ist jetzt auch behoben und ich hab sogar zum ersten Mal objektorientiert programmiert. Klappt eigentlich auch alles.

Aber es ist immer noch zu langsam. Ja und das ist meine Frage. Am meisten Zeit braucht ja immernoch cURL. Kann man das irgendwie optimieren? Hier mal die 2 Funktionen aus meiner Klasse.

Einmal für die Twitter API:
PHP-Code:
public function get_update($user$password)
    {
        
$ch curl_init();
        
curl_setopt($chCURLOPT_URL'http://twitter.com/statuses/user_timeline.json');
        
curl_setopt($chCURLOPT_HEADERfalse);
        
curl_setopt($chCURLOPT_POST0);
        
curl_setopt($chCURLOPT_RETURNTRANSFER1);
        
curl_setopt($chCURLOPT_USERPWD$user.':'.$password);
        
$buffer curl_exec($ch);
        
$json json_decode($buffer);
        
$tweet $json[0]->text;
        return 
$tweet;
    } 
Und einmal um die Statusnachricht in einem der VZs zu ändern:
PHP-Code:
public function update_vz($text$vz$user$password)
    {
        switch (
$vz) {
            case 
'pvz':
                
$page_url 'http://m.schuelervz.net/op/schuelervz/de/mcat/';
                
$needle '/op/schuelervz/de/mcat/login/;jsessionid=';
                break;
            case 
'svz':
                
$page_url 'http://m.studivz.net/op/studivz/de/mcat/';
                
$needle '/op/studivz/de/mcat/login/;jsessionid=';
                break;
            case 
'mvz':
                
$page_url 'http://m.meinvz.net/op/meinvz/de/mcat/';
                
$needle '/op/meinvz/de/mcat/login/;jsessionid=';
                break;
        }
        
        
$ch curl_init();
        
// Session-ID holen
        
$url $page_url.'login/';
        
curl_setopt($chCURLOPT_URL,$url);
        
curl_setopt($chCURLOPT_HEADERfalse);
        
curl_setopt($chCURLOPT_RETURNTRANSFER1);
        
curl_setopt($chCURLOPT_USERAGENT'Mozilla/5.0 (iPhone; U; CPU like Mac OS X; en)');
        
$buffer curl_exec($ch);
        
$session substr($buffer,strpos($buffer,$needle)+strlen($needle),32);

        
// Einloggen ins VZ
        
$url $page_url.'login/;jsessionid='.$session;
        
curl_setopt($chCURLOPT_URL,$url);
        
curl_setopt($chCURLOPT_POST1);
        
curl_setopt($chCURLOPT_POSTFIELDS'username='.$user.'&password='.$password);
        
$buffer curl_exec($ch);

        
// Aktualisieren der Status-Nachricht
        
$url $page_url.'status/senden/;jsessionid='.$session;
        
curl_setopt($chCURLOPT_URL,$url);
        
curl_setopt($chCURLOPT_POSTFIELDS'text='.$text);
        
$buffer curl_exec($ch);
    } 

Geändert von JakobD (25.04.2009 um 18:45:33 Uhr)
Mit Zitat antworten