ugrás a tartalomhoz

Könvytár listázásra "Maximum execution time of 30 seconds exceeded"

unregistered · 2007. Jan. 9. (K), 20.51
Üdv mindenki!
Szóval egy vátozó gubancot nem értek!
Így müxik:
<?

$konyvtar = opendir("C:\\phpweb");

while (gettype($fajl = readdir($konyvtar)) != "boolean") 
  {
    if (is_file($fajl)) 
	  {
		print $fajl . "<br>";
	  }
  }

closedir($konyvtar);
?>
így viszont már nem:
<?

$konyvtar = opendir("C:\\phpweb");
$fajl = readdir($konyvtar);

while (gettype($fajl) != "boolean") 
  {
    if (is_file($fajl)) 
	  {
		print $fajl . "<br>";
	  }
  }

closedir($konyvtar);
?>
ezzel a "hibával" tér vissza bár nemtudom hogy mi nem tetszik neki a 8. sorban:

Fatal error: Maximum execution time of 30 seconds exceeded in C:\phpweb\konyvtar.php on line 8



Valaki magyarázza el hogy mit csinálok rosszul!
Előre is köszömnöm!
 
1

Végtelen ciklus?

siposa · 2007. Jan. 9. (K), 20.57
Az alsó nem végtelen ciklus?
2

nemhiszem

unregistered · 2007. Jan. 9. (K), 22.04
nem hinném... annyi az egész változattás a kódban hogy változót $fajl = readdir($konyvtar)-t "kiviszem a kódból" és márcsak hivatkozok a változóra simán hogy $fajl
3

pedig végtelen lehet

tothmate · 2007. Jan. 9. (K), 22.27
Szia!
A http://www.php.net/manual/hu/function.readdir.php szerint:
readdir(): A könyvtárban levő következő file nevével tér vissza.
Tehát a 2. esetben a $fajl nevű változód nem változik soha és a while feltétele mindig teljesül, vagyis végtelen ciklusba kerülsz mégis.
Ákos
4

IGAZ

unregistered · 2007. Jan. 9. (K), 23.11
uhh igazad(igazatok) van! ezt ki is hagytam hogy mindig új sort olvas be... mindenesetre mostmár nem nyitok új topikot de van még pár kérdésem pl miért van az hogy csak arra a mappára vonatkozik ahol ez a php file van? pl hivatkoztam hogy a $konyvtar = opendir("mappa"); de így csak egy üres lappal tér vissza...

aztán ezt feladva próbáltam úgy is ha ezt a kódot használom akkor tudok külső mappára hivatkozni és meg is kapom a filokat csakhogy ugye a . és .. is benne van mint minden rendes "könyvtár fában":
<?php

$dir = opendir("mappa");

while (($file = readdir($dir)) !== false)
	  {
		print $file . "&nbsp;";
	  }
  closedir($dir);
?> 
erre találtam ki hogy okés akkor nem mutatjuk meg a . és .. "fa elemket"

erre használtam ezt a kódot hogy:
<?php

$dir = opendir("mappa");

while (($file = readdir($dir)) !== false)
  {
   if (($file !== ".") || ($file !== ".."))
	  {
		print $file . "&nbsp;";
	  }
  }
  closedir($dir);
?> 
de hiába mert ott vannak a . és .. elemek az eredményben... ha külön csak azt használomhogy if ($file !== ".") akkor gyönyörűen müxik de már "vagy kapcsolattal" nem :(

Az a cél hogy kiírja egy mappában lévő file-okat... de a könyvtárfa elemek nékül...

valamint zöldfülűségemnek köszönhetően még egy dolgot nem tudok pl ha ilyet szertnék kiíratni sokszor hogy:

<div class="ez"> </div>

akkor ez valahogy így nézne ki hogy:

print "<div class="ez"></div>"

Csakhogy itten a "-kal gond van. Ilyenkor mi a teendő mert a '-al már tudok bánni csak még "-al nem megy :)

Bocsánat zölfülű kérdéseimért de ezeket nem találom a neten :(
Üdv
5

Ejj

unregistered · 2007. Jan. 9. (K), 23.16
ejj már megint előbb járt a kezem mint az eszem...
mert ez a könyvtárfa kijátszása ki le van írva itt amit belinkeltél http://www.php.net/manual/hu/function.readdir.php... bár azt nem értem hogy mit csinál a "$fajl\n";

Viszont azért még hogy okuljak hibáimból megmondanátok hogy nálam mi volt a hiba?
Köszi
6

logikai kapcsolatok, sztringek

tothmate · 2007. Jan. 10. (Sze), 00.46
Szia!
Gondold végig mikor hamis a következő feltétel:

(($file !== ".") || ($file !== ".."))
valószínúleg ezért nem adta az általad elvárt eredményt a kódod.
A "$fajl\n"-ből a \n nem világos? Az egy sima újsor :)

php.net nagyon hasznos pl. a sztringekről itt olvashatsz (valószínűleg választ ad az idézőjeles kérdésedre): http://www.php.net/manual/hu/language.types.string.php

Jó böngészést!
Ákos
7

hoppá

unregistered · 2007. Jan. 10. (Sze), 01.26
&file\n az okés csakhogy nálam explorerben nem volt újsor... azért nem értettem hogy akkor mit csinál... amikor már hülyére próbálkozom magam akkor már elbizonytalanodom... éééés igen, logikainál a ! meg a zárójelezés kavart be... és tényelg "AND" kapcsolat kell ilyenkor :P
THX ;)