Het maakt eigenlijk niet uit wat je bewuste geest doet, omdat je onderbewuste automatisch precies dat doet wat het moet doen
Verwijderd
Schrijf een wrapper, die een directory uitleest, alle aan de string voldoende namen in een array zet en die met unlink() verwijdert ...
hehe goed idee.. is wel ff wat omslachtig.Verwijderd schreef op 17 november 2002 @ 01:12:
Schrijf een wrapper, die een directory uitleest, alle aan de string voldoende namen in een array zet en die met unlink() verwijdert ...
Toch dom dat als ik met google zoek het met asp heel zo moeilijk niet is:
Set ts = fso.DeleteFile("D:\test\test2\test3\*.*")
Ben ik niet gewend om eerlijk te zijn

Het maakt eigenlijk niet uit wat je bewuste geest doet, omdat je onderbewuste automatisch precies dat doet wat het moet doen
mocht iemand er nog wat aan hebben:
Deze delete heel de tmp dir in mijn project.
PHP:
1
2
3
4
5
6
7
| if ($dir = @opendir("tmp")) { while (($file = readdir($dir)) !== false) { $file_to_delete = "tmp/". $file; @unlink($file_to_delete); } closedir($dir); } |
Deze delete heel de tmp dir in mijn project.
Het maakt eigenlijk niet uit wat je bewuste geest doet, omdat je onderbewuste automatisch precies dat doet wat het moet doen
Verwijderd
Is het geen slim plan om een functie Unlink(); te schrijven die met Wildcards werkt?
Het is zo stom dat zo'n functie er nog niet is...
Ik ga er één schrijven, als hij af is post ik de URL wel...
Het is zo stom dat zo'n functie er nog niet is...
Ik ga er één schrijven, als hij af is post ik de URL wel...
Maak 'm dan gelijk mbv een regexp
.. dan is ie ook nog een stuk mooier dan de ASP variant
Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'
Janoz schreef op 17 november 2002 @ 16:40:
Maak 'm dan gelijk mbv een regexp.. dan is ie ook nog een stuk mooier dan de ASP variant
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
| function UnlinkExtended($dir,$fileregexp,$recurse = false) { if($dir[strlen($dir)-1] != '/') $dir.='/'; if ($dir = @opendir("tmp")) { while (($file = readdir($dir)) !== false) { $file_to_delete = $dir. $file; if(is_dir($file_to_delete)) { if($recurse) UnlinkExtended($dir.$file,$fileregexp,true) } else { if(preg_match($fileregexp,$file) @unlink($file_to_delete); } } closedir($dir); } |
Localhost, sweet localhost
Cool! Maar onthoud wel dat je hierbij voor elke file een regular expression moet toepassen en dat kost aardig wat tijd.kvdveer schreef op 17 November 2002 @ 16:52:
PHP:
1 function UnlinkExtended($dir,$fileregexp,$recurse = false)
Voor zover het niet toch al een goed idee was moet je het gebruik van UnlinkExtended dus vermijden bij elke pagina-aanroep. Schrijf liever een op vaste tijdstippen draaiend onderhoudsscript (cronjob) of gebruik de oplossing alleen op pagina's die speciaal voor dat doel worden aangeroepen (een clean-up itempje in je admin bijvoorbeeld).
|_____vakje______|
zowiezo is unlinken doorgaans een onderhoudstaak.CyberSnooP schreef op 17 November 2002 @ 17:24:
[...]
Cool! Maar onthoud wel dat je hierbij voor elke file een regular expression moet toepassen en dat kost aardig wat tijd.
Voor zover het niet toch al een goed idee was moet je het gebruik van UnlinkExtended dus vermijden bij elke pagina-aanroep. Schrijf liever een op vaste tijdstippen draaiend onderhoudsscript (cronjob) of gebruik de oplossing alleen op pagina's die speciaal voor dat doel worden aangeroepen (een clean-up itempje in je admin bijvoorbeeld).
Momenteel is 'ie trouwens niet echt compatible met windows, ik gebruik een forwardslash. Hij is trouwens ook 110% untested...
Localhost, sweet localhost
@ is niet per definitie vies... Het is vies als je het te pas en te onpas gebruikt.
WIl je het zonder @ doen dan moet je:
1. controleren of het bestand bestaat
1a. Controleren of het geen directory is
2. Controleren of je schrijfrechten hebt
3. Controleren of het niet op een read-only filesystem staat
En zelfs dan kan het mis gaan op een samba-share bijvoorbeeld waar ook zaken als timing mee gaan spelen.
Kortom: @ heb je in dit geval ècht nodig. Je hebt er gelijk in dat er een nette afhandeling van eventuele fouten moet staan.
Je krijgt dan:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
| function UnlinkExtended($dir,$fileregexp,$recurse = false) { if($dir[strlen($dir)-1] != '/') $dir.='/'; if ($dir = @opendir("tmp")) { while (($file = readdir($dir)) !== false) { $file_to_delete = $dir. $file; if(is_dir($file_to_delete)) { if($recurse) UnlinkExtended($dir.$file,$fileregexp,true) } else { if(preg_match($fileregexp,$file) if(!@unlink($file_to_delete)) trigger_error("Could not delete file"); } } closedir($dir); } |
Je blijft de @ nodig hebben, omdat unlink nou eenmaal kan falen.
Localhost, sweet localhost
Verwijderd
Wat een onzin. 'Error handling' vs 'doen alsof je neus bloedt'.
Misschien wil je wel een gebruiker melden dat er iets is fout gegaan. Als handige functie moet je dat dan niet verbergen, maar doorgeven naar buiten, zodat de programmeur daar kan beslissen wat er moet gebeuren met deze fout.
Misschien wil je wel een gebruiker melden dat er iets is fout gegaan. Als handige functie moet je dat dan niet verbergen, maar doorgeven naar buiten, zodat de programmeur daar kan beslissen wat er moet gebeuren met deze fout.
In library functie mag je de gebruiker NIET op de hoogte stellen dat er iets gebeurd is, het is de taak vande frontend om dat te doen. Natuurlijk moet je wel de fout opvangen en aanbieden aan de frontend. Daarvoor was dan ook mijn tweede wijziging. Nogmaals: zonder @ kan dat niet.Verwijderd schreef op 18 November 2002 @ 02:20:
Wat een onzin. 'Error handling' vs 'doen alsof je neus bloedt'.
Misschien wil je wel een gebruiker melden dat er iets is fout gegaan. Als handige functie moet je dat dan niet verbergen, maar doorgeven naar buiten, zodat de programmeur daar kan beslissen wat er moet gebeuren met deze fout.
Als jij er van overtuigd bent dat het wel kan (zonder dat de functie zelf faalt!) laat maar zien dan.
Localhost, sweet localhost
Verwijderd
Maar hierbij ga jij ervan uit dat het erg is dat de functie faalt. Mijns inziens is dat niet erg, mits je in je aanroepende code een error handler hebt. En zelfs als je dat erg vindt kan je binnen je funktie een specifieke error handler aangeven met set_error_handler(). Ik vind de error handling funkties van PHP niet mooi maar ze zijn volgens mij goed bruikbaar.
Ik zeg dit overigens als iemand die PHP alleen in theorie kent, want ik werk er niet mee.
Ik zeg dit overigens als iemand die PHP alleen in theorie kent, want ik werk er niet mee.
Pagina: 1