phpbar.de logo

Mailinglisten-Archive

[php] verzweiflung

[php] verzweiflung

Manfred Niedermeier php_(at)_phpcenter.de
Fri, 31 Aug 2001 15:43:45 +0200


Hallo,

ich hab' deine Beschreibung nachgebaut und bei mir läuft es so fehlerfrei.

<?php
$array = file( "textfile.txt" );
$werte =  count ( $array );
echo "wert: $werte<br>";
mt_srand ((float) microtime() * 10100100);
$line = _(at)_mt_rand(0,($werte-1));
echo "Line $line wird geloescht<br>";

while (list ($key , $value) = each($array))
{
 echo "$key : $value <BR>";
};
echo "<br>";

unset ($array[$line]);

reset($array);
while (list ($key , $value) = each($array))
{
 echo "$key : $value <BR>";
};

$handle = fopen("textfile.txt" , "w+");
fputs( $handle , implode("" , $array ));
fclose ($handle);
?>



----- Original Message -----
From: "Jomo Aykay" <ttaggg_(at)_mail.ru>
To: <php_(at)_phpcenter.de>
Sent: Thursday, August 30, 2001 9:52 PM
Subject: [php] verzweiflung


hallo.

ich habe folgendes problem mit einem php skript:



das skript funkt so, dass es ein textdatenfile ausliest:


$list = file(textfile.txt);
$anzahl = sizeof($list); // die anzahl der elemente dieses arrays


das file besteht aus einer liste aus URLs, untereinander, durch einfache
returns getrennt, (returns als unix line feeds, \r)

www.abc.com/
www.def.com/hallo.html
www.usw.net



danach wird im skript per zufall eine zeile aus diesem array ausgesucht:


mt_srand ((float) microtime() * 10100100);
$line = mt_rand(0,($anzahl-1));


dann wird die variable $hostname zugewiesen:

$hostname = rtrim($list[$line]);


danach soll dieses arrayelement aus dem array geloescht werden, und zwar
mit:

unset ($list[$line]);



dann wird das ganze wieder als file abgespeichert:

$templist = implode ("", $list);
$lt = fopen(textfile.txt,"w+");
if ($lt){
fwrite($lt, $templist);
fclose ($lt);
}

danach wird das skript wieder von sich selbst aufgerufen, das ganze ding
läuft also wieder ab.



und jetzt zum auftauchenden problem:

ich habe zum testen ein <echo $anzahl> reingetan. eigentlich muesste ja
jetzt bei jedem aufruf EIN (1) element (= eine zeile = eine URL) aus dem
array geloescht werden und dann im file gespeichert werden.
 usw. usw. bis das text file leer ist.

das eigenartige ist nun aber, dass es manchmal gleich mehrere zeilen
(meist 2) löscht, dann gehts wieder fuer ein paar aufrufe scheinbar
wieder normal, dann loescht er mir wieder gleich zwei zeilen, einmal
hatte ich im zugehoerigen textfile eine leere(!) zeile.

ich verstehe einfach nicht, wie das sein kann!! habe auch schon zum
debuggen ein  <echo $anzahl>  vor dem unset und danach reingegeben, das
stimmt aber immer.

aber beim naechsten aufruf des skripts passiert es manchmal dass er um
mehr als nur eine zeile weniger hat. manchmal aber auch nicht.

ich verzweifle noch!



bitte um rat!


danke


jomo


--
** http://www.php-center.de **
Die PHP-Liste: mailto: php_(at)_phpcenter.de
http://lists.phpcenter.de/mailman/listinfo/php



php::bar PHP Wiki   -   Listenarchive