z mojego rozumowania, jeśli korzystasz z programu do buforowania PHP takiego jak APC, eAccelerator, itd., To opkody będą przechowywane w pamięci dla szybszego wykonania po kolejnych żądaniach. Moje pytanie brzmi: dlaczego NIE ZAWSZE lepiej/szybciej kompilowałbyś swoje skrypty, zakładając, że używasz kompilatora takiego jak phc lub nawet HPHP (chociaż wiem, że mają problemy z dynamicznymi konstrukcjami)? Po co zawracać sobie głowy przechowywaniem kodów, ponieważ muszą one zostać ponownie odczytane przez Zend Engine, który używa funkcji C, aby go wykonać, skoro można po prostu skompilować i pominąć ten krok?Pytanie o pamięć podręczną PHP vs kompilacja
Odpowiedz
Nie można po prostu skompilować do c, a skrypt PHP należy wykonać w ten sam sposób. HPHP wykonuje prawdziwą kompilację, ale nie obsługuje całego zestawu funkcji php.
Inne kompilatory faktycznie po prostu osadzają interpretera php w pliku binarnym, więc i tak nie kompilujesz kodu.
PHP nie jest skompilowane. buforowanie kodu jest bardzo szybkie i wystarczająco dobre dla 99% aplikacji. Jeśli masz ruch na Facebooku i już zoptymalizowałeś bazę danych, kompilacja może być jedynym sposobem na zwiększenie wydajności.
PHP nie jest cienką warstwą biblioteki std c.
gracias za poświęcenie czasu na odpowiedź. Czy możesz wyjaśnić, co masz na myśli, mówiąc "PHP nie jest cienką warstwą do biblioteki STD"? – blacktie24
Jeśli PHP nie ma eval()
, prawdopodobnie będzie możliwe proste, skompilowane tłumaczenie binarne z (względną) łatwością. Ale ponieważ PHP może sam dynamicznie budować/wykonywać skrypty w locie za pośrednictwem eval(), nie jest możliwe zrobienie pełnego pliku binarnego. Każdy plik binarny musiałby zawierać cały PHP, ponieważ kompilator nie miałby pojęcia, co może zrobić twój kod dynamiczny. Przejdziesz z małego skryptu o wielkości 1 lub 2k do ogromnego pliku wielomegajowego pliku binarnego.
thx za odpowiedź! Zakładając, że nie używam eval(), i obejrzałem kwestię konstrukcji dynamicznych (dostałem kolejne pytanie o kompilatory i konstrukcje dynamiczne w innym wątku, który napisałem jako komentarz pod moim pierwotnym pytaniem), czy byłby to wydajny do kompilacji? – blacktie24
Nie wiem o "skuteczny", ale nie widzę, dlaczego nie byłoby to możliwe. –
- 1. Wyczyść pamięć podręczną Magento
- 2. Symfony2 wyłączyć pamięć podręczną?
- 3. Mod_pagespeed usunąć pamięć podręczną?
- 4. Wyczyść pamięć podręczną NSURLConnection
- 5. PhantomJS przechowuje pamięć podręczną
- 6. C++ wyrównanie pamięć pytanie
- 7. Jak wyczyścić pamięć podręczną Smarty'ego
- 8. Resetuj pamięć podręczną dla Dappera
- 9. Link HTML pomijający pamięć podręczną?
- 10. Jak testować pamięć podręczną ETag?
- 11. Jak całkowicie wyłączyć pamięć podręczną?
- 12. Jak wyczyścić pamięć podręczną Androida
- 13. W której warstwie zaimplementowano pamięć podręczną?
- 14. Pytanie o tym stronę HTML w PHP
- 15. HTML5 pamięć podręczną aplikacji manifest rozszerzenie pliku
- 16. Trwałość Firebase, wyczyść pamięć podręczną Firebase
- 17. PAMIĘĆ SEGMENTOWA vs PŁASKA PAMIĘĆ
- 18. Postgresql cache (pamięć) wydajność + jak rozgrzać pamięć podręczną
- 19. jak wyczyścić pamięć podręczną w gwt?
- 20. Jak wyświetlić pamięć podręczną aplikacji dla Androida?
- 21. Jak wyczyścić pamięć podręczną Apache Maven?
- 22. Jak wyczyścić pamięć podręczną w przędzy?
- 23. Jak wyczyścić pamięć podręczną md-autocomplete?
- 24. Railsy tracą pamięć podręczną fragmentów z modeli
- 25. Magento wyłącz pamięć podręczną z bazy danych
- 26. Wyczyść pamięć podręczną szablonów po wdrożeniu
- 27. wyczyść pamięć podręczną przeglądarki, używając wiersza polecenia
- 28. Wyczyść pamięć podręczną w usłudze AWS Redshift
- 29. Jak zresetować pamięć podręczną czcionek css
- 30. Sprawdź pamięć podręczną przeglądarki dla pliku js.
Istnieje również część 2 na to pytanie, którą zacząłem osobny wątek dla: http://stackoverflow.com/questions/6525187/why-are-dynamic-constructs-difficult-for-php-compilers-phphp – blacktie24