php - más rápido fopen o file_get_contents?
más rápido fopen o file_get_contents?
yo soy de la ejecución de múltiples sitios con alto tráfico , como un requisito , todas las imágenes se descargan a través de image.php?id=IMAGE_ID_HERE .
Si alguna vez has hecho eso antes , usted sabe que ese archivo va a leer el archivo de imagen y haciendo eco al navegador con cabeceras especiales .
Mi problema es la carga en el servidor es muy alta (150-200) y el comando SUPERIOR muestra varias instancias de image.php , por lo que image.php está funcionando lento !
probablemente el problema es fopen la carga de la imagen a la memoria antes de enviarlo al cliente. Cómo leer un archivo y pasar a través de directamente?
Después de que se ha optimizado el código, se utiliza el almacenamiento en caché siempre que sea posible, hacer crear un CDN . par de servidores, métodos de sincronización, balanceadores de carga y no hay necesidad de preocuparse acerca de las solicitudes más 🙂
Lo que está mal con file_get_contents? O por qué no simplemente usar fphassthru o readfile? Y si esto es sólo acerca de los encabezados personalizados, considere el uso de mod_cern_meta o mod_headers.
Para todas las preguntas preguntando si fnA() o la fnB() es más rápido: sólo el perfil de su código. él te dará la respuesta y es probable que usted encontrará que hay algo más que está reduciendo la velocidad.
suponiendo que has revisado todo el código optimizado todo , se deshizo de otras cosas hasta que no pasó nada ?
¿Por qué no aplicar las cabeceras especiales en Apache o Nginx conf archivos y servir las imágenes a la derecha de archivos? No hay solución de tocar el PHP procesador sería de mach.
No estoy seguro de lo que estás tratando de decir, pero, en cualquier caso, el perfilado es el camino a seguir en lugar de pedir una sintético() vs (b).
OriginalEl autor Ronan Dejhero | 2011-10-18
fopen y file_get_contents son casi equivalentes
a la velocidad con la consistencia de la carga de la página se puede utilizar
http://www.php.net/fpassthru
con estas funciones, el contenido del archivo se imprime directamente, byte por byte
frente a file_get_contents, por ejemplo, donde se almacena el conjunto de los datos dentro de una variable
$var = file_get_contents();
así, para hacer que estos funcionen correctamente tendrá que deshabilitar el almacenamiento en búfer de salida (de lo contrario sería hacer readfile() sin sentido) en la página que sirve las imágenes
entonces usted está haciendo mal. lol
Déjeme adivinar, usted no tiene una parte superior se rellena con image.php tampoco había alguna vez.
ill intentar que , la esperanza de la carga de las gotas 🙂
sí, no usar fopen o file_get_contents, intente utilizar fpassthru para una semana y supervisar la carga del servidor
si usted todavía tiene problemas con serverload después de usar fpassthru y usted es capaz de instalar módulos de apache, puede intentar mod_xsendfile consulte este enlace para obtener más información de codeutopia.net/blog/2009/03/06/…
¿Por qué no almacenar en caché el contenido de la imagen con apc ?
if(!apc_exists('img_'.$id)){
apc_store('img_'.$id,file_get_content(...));
echo apc_fetch('img_'.$id);
de esta manera el contenido de la imagen no se puede leer desde el disco más de una vez.
apc es difícil de configurar correctamente. pero podría ser una buena solución!
Sí quiero downvoters explicaría por qué…
Lo cierto problema esta caché podría solucionar?
Así si el sitio web como un montón de éxitos de e/S en disco es alto, debido a concurent file_get_contents, almacenar el contenido de la memoria ram sería deshacerse de que
la lectura de la Memoria es más rápida que la lectura del Disco
OriginalEl autor Paté