Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] problem przy kopiowaniu plików, nie rozpoznaje niektórych z nich
szoko6
post
Post #1





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 18.08.2011

Ostrzeżenie: (0%)
-----


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

Ten post edytował szoko6 22.08.2011, 19:08:04
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 1)
Ilware
post
Post #2





Grupa: Zarejestrowani
Postów: 248
Pomógł: 31
Dołączył: 14.12.2010
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


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)
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 23:43