Foros del Web » Programando para Internet » PHP »

Para que se utiliza la @

Estas en el tema de Para que se utiliza la @ en el foro de PHP en Foros del Web. Hola, quiera saber cual es la función de esto: @include_once("http://www.pepe.pep/curr_vers.inc"); 1)¿para que sirve la @? 2)¿qué diferencia hay entre include y include_once? 3)¿se puede hacer ...
  #1 (permalink)  
Antiguo 27/05/2003, 19:44
 
Fecha de Ingreso: noviembre-2002
Mensajes: 190
Antigüedad: 21 años, 5 meses
Puntos: 0
Para que se utiliza la @

Hola, quiera saber cual es la función de esto:

@include_once("http://www.pepe.pep/curr_vers.inc");

1)¿para que sirve la @?
2)¿qué diferencia hay entre include y include_once?
3)¿se puede hacer un include como este, de una archivo que esta fuera del sitio?

Saludos a todos!!
  #2 (permalink)  
Antiguo 27/05/2003, 21:08
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
1)¿para que sirve la @?

Para desactivar los posibles mensajes de error que arroje el uso de esa función ...

2)¿qué diferencia hay entre include y include_once?

El "once" hace el include una sóla vez .. mientras que el include a secas lo hace siempre que se le solicite.

3)¿se puede hacer un include como este, de una archivo que esta fuera del sitio?

Se puede siempre y cuando tengas activado (en tu php.ini) allow_url_fopen
Pero si haces un "include" de un .php remoto sólo vas a obtener el posible HTML/texto/etc que genere la ejecución de dicho script .php .. NO variables/funciones como para que las uses como lo haces habitualmente si está en "local" tu archivo a incluir.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #3 (permalink)  
Antiguo 28/05/2003, 09:00
 
Fecha de Ingreso: noviembre-2002
Mensajes: 190
Antigüedad: 21 años, 5 meses
Puntos: 0
Hola Cluster! , ¿te acuerdas en un post anterios que te habia preguntado, cómo incluir un php externo al mi sitio ?

http://forosdelweb.com/showthread.ph...&highlight=xml

creo que con include se puede, y dandole un valor a las variables:
lo que hice fue pobar de estas formas: (estoy ejecutando esto fuera de pepe.com en midominio.com)
<?php
@include("http://pepe.com/gal.php?dir=http://galerias.com/pepe");
@include_once("http://pepe.com/gal.php?dir=http://galerias.com/pepe");
include("http://pepe.com/gal.php?dir=http://galerias.com/pepe");
include_once("http://pepe.com/gal.php?dir=http://galerias.com/pepe"); ?>

esto funciona en MSIE, en Nestcape y en Opera, en Nestcape y Opera funciona mucho mejor, lo q' trate de hace es ejecutar este código en los 3 nevegadores al mismo tiempo y lo abrí 3 veces en c/navegador (9 ejecuciones al mismo tiempo). El problema que apareció fue q' el algunos casos sólo ejecuto las línes 1,2 y 3 en otros las 2,3y4 en otros las lines 2 y 4.
1) ¿a que se debe esto? ¿a velocidad de respuesta del server?
2) ¿es una buena alternativa de ejecución de un php externo?
3) ¿le puedo hacer alguna mejora a esto, para mayor rendimiento?

Saludos! Cluster y mil gracias.En pocos meses aprendi más q' en todo los cursos q' pague!

PD.: te queria decir que en ninguno de los casos, tanto con @ con sin @, mostro un error, simplemente no ejecutaba alguna de las líneas.

si alguna otra persona, aparte de cluster, me quiere dar una mano, no me molesta! me vendrúa muy bien

Saludos!

Última edición por erama; 28/05/2003 a las 09:00
  #4 (permalink)  
Antiguo 28/05/2003, 09:28
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 10 meses
Puntos: 16
Hola,

Una pregunta, ¿como sabes que lineas se ejecutaron y cuales no? ¿Has mirado en el HTML generado a ver si estan hay los mensajes de error? Cuando haces un include() a una pagina en otro servidor, lo que pasa es que tu servidor genera una peticion HTTP al otro servidor e incluye el HTML devuelto. Lo mismo que tu navegador. Si el otro servidor no responde o tarda mucho, podria ser que tu servidor lo tomase como que devuelve un HTML vacio. Y si el script remoto trata tambien de acceder a otra web (como parece ser el tuyo), entonces añade mas tiempo.

Todo tipo de optimizacion depende del script remoto en cuestion.

Suerte.

PD: Supongo que te habras dado cuenta que no soy Cluster, espero que te haya servido la respuesta a pesar de ello.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #5 (permalink)  
Antiguo 28/05/2003, 10:26
 
Fecha de Ingreso: noviembre-2002
Mensajes: 190
Antigüedad: 21 años, 5 meses
Puntos: 0
Gracis Josemi por tu respuesta, a lo que yo me refiero cuando digo que no ejecuta tales líneas es en referencia a esta lineas:

<?php
@include("http://pepe.com/gal.php?dir=http://galerias.com/pepe"); //línea nº 1
@include_once("http://pepe.com/gal.php?dir=http://galerias.com/pepe"); //línea nº 2
include("http://pepe.com/gal.php?dir=http://galerias.com/pepe"); //línea nº3
include_once("http://pepe.com/gal.php?dir=http://galerias.com/pepe"); //línea nº 4 ?>

es decir cada línea en una ejecución del include.
Creo que esta función (include) es mucho más rápida y segura que readfile ¿verdad? . Yo anteriormente estaba usando readfile pero en horas pico con mayor tráfico en el server me salia un error de tiempo de ejecución o algo similar, todavía no lo he probado en horas pico, pero creo que va a funciona mejor que con readfile.
Por el momento funciona bastante bien, pero tengo miedo que en horas tipo se muera nuevamente.
¿Si alguién tiene alguna mejor idea? o ¿algún consejo? bien benido!

Saludos! y gracias!
  #6 (permalink)  
Antiguo 28/05/2003, 13:42
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Pues idea o consejo .. Lo que dijo josemi con respecto a que lo que te devuelve en un "include" al ser llamado de forma remota es el HTML que genere .. si no se ha podido abrir dicho archivo .. con @ delante de include() ni te daras cuenta ...

Podrías usar tu include() bajo un condicional (pues "creo" que devuelve FALSE si no ha podido ejecutarse ...)

Y .. si tu archivo a incluir es realmente necesario para la ejecución de tu resto de script .. usa require() en lugar de include() .. El require() proboca un "FATAL" error si no puede cargar completamente el archivo que se llama y detiene la ejecución del script ..

Ejemplo:

Código PHP:
if (!@include("http:// .....")){
  echo 
"No se ha podido acceder a tal archivo remoto ...";
   
// aquí veras tu si detienes la ejecución del script o que haces ..

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #7 (permalink)  
Antiguo 29/05/2003, 02:27
Avatar de epplestun  
Fecha de Ingreso: octubre-2001
Mensajes: 1.621
Antigüedad: 22 años, 5 meses
Puntos: 5
Simplemente abrir archivos remotos con include es hacer un mal usode ello, para eso existen los fopen() o diferentes funciones o modulos.
__________________
Usuario registrado de Linux #288725
  #8 (permalink)  
Antiguo 29/05/2003, 12:11
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Por lo menos file() .. fopen() .. etc dan como resultado FALSE si no se ha podido abrir el archivo y la conexión del archivo si se ha podido abrir. (el include() no sé si devuelve FALSE si no puede abrir el archivo .. creó que sólo dá un "Warning" ..)

Creo q es más "controlable" usar funcione como fopen() y afines donde puedes por ejemplo controlar el número de bytes q lees o hasta el -time out- si usases fsockopen() por ejemplo ...)

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:02.