Xampp und große arrays|strings == sehr langsam :-(

Irgendwelche Probleme mit XAMPP für Windows? Dann ist hier genau der richtige Ort um nachzufragen.

Xampp und große arrays|strings == sehr langsam :-(

Postby Taz » 02. November 2004 05:01

Hallo,
ich habe leider ein kleines Problem mit Xampp.

PHP braucht leider sehr lange um zb. mit implode ein array in einen String umzuwandeln.
Auf meiner Homepage(kein Xampp aber gleich php version), benötigt zb. implode um ein array (2000 werte) zu einen string zuverbinden ca. 0.025 sec..
Zuhause auf meinen rechner mit Xampp dauert es aber über 12 sec. , wo kann hier der Fehler liegen ?

Beispiel Script:
Code: Select all
<?php
$fp           = fopen('./datei.txt', "a+b");
flock($fp,LOCK_EX);
$Zeilen_Neu[] = fgets($fp);

while(!feof($fp)) {
   $Zeilen_Neu[] = fgets($fp);
}

// hier bei implode dauert es sehr, sehr lange...
$inhalt = implode('',$Zeilen_Neu);

flock($fp,LOCK_UN);
fclose($fp);
?>

Mein Rechner sollte auch ausreichent bestückt sein:

Xampp Version: xampp-win32-1.4.4
Betriebssystem : win Xp Pro.
Amd XP3200 Barton
80gb serial ata Festplatte (x2)
1 Gb Ram
keine Firewall

Ich würde mich sehr über eine antwort freuen :-)
Gruß
Taz
Taz
 
Posts: 13
Joined: 12. November 2003 18:06

Postby Taz » 02. November 2004 12:33

so, es hat auch nichts mit dem Script zu tun, ein ganz einfaches Script hier mal als beispiel:

Code: Select all
<?php
$text = 'Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, ';

$new_array = array();
for($i=0;$i<2000;$i++) {
   $new_array[$i] = $text;
}
// script time ~ 0.0025 sec.

$string = implode('',$new_array);
// script time ~ 7.1866
?>


Warum dauert der implode befehl denn hier so lange ? das ist doch nicht normal...
Taz
 
Posts: 13
Joined: 12. November 2003 18:06

Postby Taz » 02. November 2004 13:00

und mit der function implode hat es auch direkt nichts zu tun,
wenn ich das ganze zb. so mache, dauert es genau so lange :(

Code: Select all
<?php
function MyImplode($array) {
   $string = '';
   for($i=0;$i<count($array);$i++) {
      $string .= $array[$i];
   }
   return $string;
}

$text = 'Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, Blindtext, ';

$new_array = array();
for($i=0;$i<2000;$i++) {
   $new_array[$i] = $text;
}
// script time ~ 0.0025 sec.

$string = MyImplode($new_array);
// script time ~ 7.2666
?>
Taz
 
Posts: 13
Joined: 12. November 2003 18:06

Postby Wiedmann » 02. November 2004 13:48

Bei dem implode() kann ich dir leider auch nicht helfen (es liegt da auch mehr am Stringkopieren), auch wenn der bei dir ja echt schnell ist ;-)

Abhilfe bei deinem ersten Script, ist das Kürzen des Ganzen auf folgende Zeile:
Code: Select all
<?php
    $inhalt = file_get_contents('./datei.txt');
?>
Wiedmann
AF Moderator
 
Posts: 17102
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Postby Taz » 02. November 2004 14:21

ja, danke ist mir bekannt, aber das ist ja auch nur ein beispiel script um zu zeigen wo das Problem liegt.
Ich brauche aber das array, um die inhalte zu verarbeiten zu können,
und später müssen die arrays dann halt wieder zu einem string zusammen gefügt werden.

Die Beispiel scripte hier brauchen bei mir hier local auf meinen rechner, ca 7 -8 sec.,
aber bei meinen webhoster(auch php5) dauert die ausfürung der beispiel scripte, nur ca 0.02 Sec.
und das Ist das Problem!

kann das an ihrgenteine einstellung in der php.ini liegen ?

PS: wieso wird beim aufruf bei einer phpinfo() eigentlich der wert "memory_limit" nicht angezeigt ?
Taz
 
Posts: 13
Joined: 12. November 2003 18:06

Postby Taz » 03. November 2004 17:24

nachtrag:

Ich habe hier noch auf der festplatte ein ziemlich altes "Wampp" apache 1.2.7 und php 4.2.2, welches sich PHPdev5 nennt.
http://www.firepages.com.au

wenn ich das installiere und das Script ausführe braucht die implode Funktion auch nur 0.023 sec.

Warum braucht implode in den neuen php, apache und Xamp Version unter Windows soooo langgeee ?

Ich werde noch verrückt :roll:
Taz
 
Posts: 13
Joined: 12. November 2003 18:06


Return to XAMPP für Windows

Who is online

Users browsing this forum: No registered users and 29 guests