Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Klasa do ładowania plików, duże obciążenie...
cojack
post
Post #1





Grupa: Zarejestrowani
Postów: 898
Pomógł: 80
Dołączył: 31.05.2008

Ostrzeżenie: (20%)
X----


No więc tak, mam sobie klasę do ładowania plików, i gdy odpaliłem profilera php to zobaczyłem że dość duże obciążenie mam na tej klasie, bo z wszystkich wywołań metod wszystkie wywołania a jest ich 33 z tego co dobrze widzę, klasyfikują na 2 miejscu w stopniu najbardziej obciążającym system, no i szczerzę powiedziawszy to nie mam bladego pojęcia co jest tak mega super złego w tej klasie że takie obciążenie powoduje, oto kod:

  1. <?php
  2. /**
  3.  * BDT_Loader klasa odpowiedzialna za ładowanie plików
  4.  *
  5.  * @author Przemysław Czekaj <przemyslaw.czekaj@aichra.pl>
  6.  * @version 0.1
  7.  * @since 03.29.2010
  8.  * @package BDT
  9.  * @subpackage lib
  10.  * @charset utf8
  11.  **/
  12.  
  13. /**
  14.  * @author cojack
  15.  * @TODO Błędy w postaci GETTEXT
  16.  */
  17. class BDT_Loader {
  18.  
  19. private static $_path;
  20.  
  21. /**
  22.   * Konstruktor klasy
  23.   *
  24.   * @return void
  25.   */
  26. public static function initialize() {
  27. chdir( './..' );
  28. self::$_path = getcwd() . '/';
  29. }
  30.  
  31. /**
  32.   * Metoda przyjmuje argument jako tablice iteracyjną
  33.   * Adres do pliku powinien zaczynać się od ./ i uwzględnić
  34.   * zmianę ścieżki podczas wczytywania danych.
  35.   * Zachowywujemy się tak jakbyśmy byli w / tego fw.
  36.   *
  37.   * @access public
  38.   * @param array $files Tablica w postaci array ('plik', 'plik', 'plik');
  39.   * @return void
  40.   */
  41. public static function loadFile( $files = array() ) {
  42. foreach( $files as $file ) {
  43. if( self::_checkFile( $file ) ) {
  44. require_once( self::$_path.$file );
  45. }
  46. }
  47. }
  48.  
  49. /**
  50.   * Metoda wczytuje pojedyncze pliki XML
  51.   *
  52.   * @access public
  53.   * @param string $files Względna ścieżka do pliku
  54.   * @return object Xml object
  55.   */
  56. public function loadFileXML( $file ) {
  57. if( self::_checkFile( $file ) ) {
  58. libxml_use_internal_errors( TRUE );
  59. $sxe = new SimpleXMLElement( self::$_path.$file, NULL, TRUE );
  60. if( $sxe === FALSE ) {
  61. $errorMsg = 'Błąd w pliku XML: ' . $file . "<br />";
  62. $errorMsg .= 'Ścieżka: ' . self::$_path.$file . "<br />";
  63. foreach( libxml_get_errors() as $error ) {
  64. $errorMsg .= "<p>" . $error->message . "</p><br />";
  65. }
  66. trigger_error( $errorMsg , E_USER_WARNING );
  67. }
  68. }
  69. return $sxe;
  70. }
  71.  
  72. /**
  73.   * Metoda sprawdza czy dany plik jest możliwy do wczytania
  74.   *
  75.   * @param string $file Względna ścieżka do pliku
  76.   * @return boolean true, false
  77.   */
  78. private static function _checkFile( $file ) {
  79. if( is_file( self::$_path.$file ) ) {
  80. if( is_readable( self::$_path.$file ) ) {
  81. return TRUE;
  82. } else {
  83. trigger_error( 'Plik: '. $file . ' jest nie dla odczytu, sprawdź uprawnienia.' , E_USER_WARNING );
  84. }
  85. } else {
  86. trigger_error( 'Zła ścieżka i/lub nazwa dla pliku: '. $file . "\n" . 'Ścieżka: ' . self::$_path . $file , E_USER_WARNING );
  87. }
  88. return FALSE;
  89. }
  90. }


Gdyby ktoś mógł mi wskazać jakieś wskazówki by poprawić wydajność tej klasy, będę wdzięczny, pomysły z autoload zachować dla siebie, od razu mówię nie, nie i jeszcze raz nie, także bez nich.

Ten post edytował cojack 23.08.2010, 20:18:19
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Pilsener
post
Post #2





Grupa: Zarejestrowani
Postów: 1 590
Pomógł: 185
Dołączył: 19.04.2006
Skąd: Gdańsk

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


A ta klasa to ma być upload, parsowanie, jakiś model danych, czemu ma to służyć? Może efekt ma być diametralnie inny i nie ma sensu analizować kodu tej klasy, nie wiem na przykład, czy problem dotyczy includowania zwykłych plików czy xml? Jeśli to ma być jakiś autoloader to może warto przyjrzeć się, jak rozwiązano to w popularnych frameworkach?
Go to the top of the page
+Quote Post

Posty w temacie


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: 27.12.2025 - 19:31