otra - llamar funcion php desde otro php
PHP include(): TamaƱo y rendimiento del archivo (3)
Una pregunta de PHP sin experiencia:
Tengo un archivo de script PHP que necesito incluir en diferentes páginas muchas veces en muchos lugares.
Tengo la opción de dividir el archivo incluido en varios archivos más pequeños e incluirlos según sea necesario ... O ... Podría mantenerlo todo junto en un único archivo PHP.
Me pregunto si hay algún impacto en el rendimiento de usar un archivo más grande frente a un archivo más pequeño para include () en este contexto. Por ejemplo, ¿hay alguna diferencia de rendimiento entre un archivo de 200 KB y un archivo de 20 KB?
Gracias.
Habrá una diferencia, entre un archivo de 200KB y 20KB ... Pero probablemente no lo notarás: un archivo de 200KB no es tan grande, y generalmente usas muchos archivos que no son "pequeños", cuando estamos construyendo una gran aplicación.
Hay dos cosas que llevan tiempo, cuando está cargando un archivo .php
:
- El código fuente de PHP está "compilado" a "códigos de operación" , que es bastante equivalente al bytecode de JAVA
- Esto se hace cada vez que se incluye un archivo PHP, por defecto
- Pero, usando un caché de código de operación como APC , esos códigos de operación se pueden mantener en la memoria, y esta compilación no se hace cada vez más, lo cual es genial: significará menos CPU utilizada, ya que la compilación ya no se realizará ( se hará solo de vez en cuando) .
- Los códigos de operación se ejecutan
- Dependiendo de lo que contenga el script, esto puede llevar algo de tiempo, o no:
- Si el archivo solo contiene funciones o definiciones de clases, esto no llevará mucho tiempo: no se ejecutará nada.
- Si el archivo contiene instrucciones, llevará más tiempo ^^
Como nota al pie: en una situación general, obtendrá mucho más tiempo / CPU / recursos optimizando sus consultas SQL, o agregando algún mecanismo de almacenamiento en caché, que pensando en ese tipo de cosas.
Sin duda hay un impacto, así que asegúrese de usar include_once () en lugar de include (). Tal vez podría considerar usar APC que tiene un caché de inclusión.
Tenga cuidado con include_once()
(y también require_once()
), es más costoso de ejecutar que include()
. Cada vez que se ejecuta include_once()
, PHP hace una búsqueda contra un índice interno de archivos ya incluidos antes de decidir si cargar el archivo o no. Cuanto más se incluye en el índice, más lenta es esta búsqueda. Además, al usar include()
o include_once()
intente utilizar rutas absolutas siempre que sea posible, ya que esto es mucho más rápido que las rutas relativas porque no está forzando a PHP a encontrar la ruta absoluta para usted. Como dijo ggiroux, alguna forma de almacenamiento en caché como APC obtendrá grandes recompensas y hará que te preocupes por la cantidad de llamadas incluidas que tienes como irrelevantes (en gran parte) (a menos que tengas un código mal escrito).
EDITAR--
Preocuparse por las llamadas anteriores es solo un problema una vez que comience a tener miles de requires
o includes
en su base de código.