Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] problem przy kopiowaniu plików
Forum PHP.pl > Forum > Przedszkole
szoko6
Witam mam taki oto kod PHP:

  1. <?php
  2. $i = 1;
  3. if ($dir = @opendir("./")) {
  4. while($file = readdir($dir)) {
  5. if (preg_match('/^osm_([a-zA-Z_0-9]+)_ext\.xml$/', $file, $match) ||
  6. preg_match('/^osm_([a-zA-Z_0-9]+)\.kml$/',$file, $match) ||
  7. preg_match('/^([a-zA-Z_0-9]+)_ext\.xml$/',$file, $match) ||
  8. preg_match('/^([a-zA-Z_0-9]+)\.kml$/',$file, $match)) {
  9. $data = $match[1][0] . "/" . $match[1][1] . "/";
  10. mkdir($data,0777,true);
  11. if(!copy("./".$file, "./". $data . $file)) {
  12. echo "nie udalo sie skopiowac osm_$file\_ext.xml...\n";
  13. } else {
  14. unlink($file);
  15. }
  16. #print "./".$data.$file."\n";
  17. }
  18. print $file." ".$i."\n";
  19. $i++;
  20. }
  21. closedir($dir);
  22. }
  23. ?>
  24.  


Zadanie polega na tym ze skrypt ma rozpoznawac takie pliki w folderze:
ciagZnakow.kml , ciagZnakow_ext.xml, osm_ciagZnakow.kml, osm_ciagZnakow_ext.xml przy pomocy wyrazen regularnych, nastepnie pobiera z ciagu znakow 2 pierwsze znaki i tworzy folder np /3/2/ i tam przenosi caly plik.

Pierwszy problem polega na szybkosci wykonywania tego, plikow mam prawie 230 tysiecy, a za szybko to sie nie wykonuje. Jestem nowy w phpie i przydalaby mi sie mala pomoc w optymalizacji ma kots pomysly?
Drugi problem, zostawilem skrypt do testow na innym folderze i widze ze duuuuuuuuzo plikow o takim poczatku "32bfe...." nie zostalo przeniesionych, co moze byc przyczyna?

Dzieki za pomoc
Ilware
proponuję napisać co w c/c++ będzie szybko chodziło, operacje na plikach w php są dosyć wolne,

Wyrażenie regularne możesz załatwić jednym

  1. (osm_)?([a-zA-Z_0-9]+)(_ext)?\.(xml|kml)
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.