Ver Mensaje Individual
  #2 (permalink)  
Antiguo 02/11/2004, 19:17
Cluster
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Tal vez .. deberías empezar por el principio ..

Aunque parezca una tontería .. si dices haber leido ciertos tutoriales sobre PHP donde ninguno trata temas de "base" com por ejemplo "en qué" se basa esta forma de trabajar que ya usabas con tu HTML común: cliente-servidor .. nunca entenderàs que es eso de CGI .. o para PHP que es eso de CLI.

CGI por ejemplo no es própio de PHP .. sino que es un standard .. una normativa que define como se comunica un servidor con otro de una forma standard para que todos entiendan. CGI significa "Commun Gateway Interface" (disculpa mi bad ingles xD).

El CGI define cosas que seguro que ya las usando; por ejemplo .. un link comùn, con su http://www.tal.tal .. (bueno eso se desglosa en partes y no sólo siempre es http:// por ejemplo .. y hay màs cosas por mèdio que podrías usar como autentificación entre otras). Aplicado junto con un lenguaje de programación del lado del servidor (ahí ya empezamos a ver que hay "lenguajes" del lado del cliente como son HTML (de marcas sí, pero al fin y al cabo es un lenguaje) .. Javascript, Flash (con su ActionScript) .. etc y lenguajes del lado del servidor como son PHP, Perl, algo en C .. Si te das cuenta . .no digo "Perl, PHP, ASP, y CGI" .. por què CGI es una "normativa" de uso de estos lenguajes .. no en sí un lenguaje .. De hecho se mezcla mucho CGI con Perl, pero PHP como ya has visto por encima puede trabajar como CGI y también hay programas en C o en otros lenguajes que podrían trabajar respetando las normas del CGI.

En cuanto al tema de "cliente-servidor" .. a grandes rasgos significa que cuando diseñas tus pàginas web .. las alojas en un servidor y estás las ves bajo una petición al servidor HTTP que las accede y te las entrega para tu navegador; por eso haces para pedirla: http://www.sitio.tal/pagina.tal. También usas otros servidores .. como el de "FTP" para subir tu sitio a ese "servidor" (computador) y que coincide donde dejas tus páginas HTML (y de otro tipo) donde el servidor HTTP publicará (dejará accesible bajo una llamada por el URL del tipo mencionado) todo lo que pongas ahí.

A todo esto .. cuando quieres usar PHP bajo tus "páginas web" o cualquier otro lenguaje de programaciòn .. lo que le dices a tu servidor HTTP es que asocie cierto tipo de extensión de páginas con tal interprete/ejecutable en el servidor .. Eso es lo lo que configuras a tu servidor HTTP y le dices por ejemplo que si se le pide una página .php .. se la "pase" al interprete de PHP .. si pides una .cgi .. se la pasa a Perl o a lo que corresponda. En esa "petición" .. el lenguaje del "lado del servidor" ejecuta su parte y la entrega al servidor HTTP para que este continue con su entrega final al "cliente" (tu navegador que lo pidió).

Esto es importante conocerlo .. por qué así comprenderás como se compone una página "dinámica" .. y a diferenciar lo que PHP (o lenguaje del lado del servidor) harà su parte .. y el resto (javascript resultante, HTML, etc....) será parte de la ejecución que tenga que hacer el cliente. (así sabras donde enfocar como resolver un problema buscando información donde corresponda .. y no preguntando cosas que son parte de la ejecución en el cliente: de javascript, de HTML .. etc .. en manuales o foros de lenguajes del lado del servidor.

Ahora .. eso sería lo que vas a trabajar: "páginas dinámicas" con tu servidor HTTP y tu lenguaje del lado del servidor .. con el objetivo de generar HTML, XML, Flash, Javascript "dinámicamente" y no "estáticamente" como ya lo hacías .. donde con estos lenguajes del lado del servidor vas a poder comunicarte con tu Base de datos .. abrir archivos en el servidor y demás taréas para tomar tus datos y componer las páginas dinámicamente.

Pero .. (siempre hay un pero) .. Si bien PHP puede trabajar de esta forma .. también puede trabajar como un lenguaje "de escritorio" .. lease C, C++, Pascal .. Basic, etc .. si lo usas directo como interprete que es. Eso sería el modo "CLI" (Command Line Interface) creando aplicaciones de "línea de comandos" (tipo DOS puro a texto ..). Si quieres un entorno "gráfico" (ventanas .. botones .. etc) pero tipo "Visual Basic" y similares, .. usarías PHP-GTK (tienes un subforo para que veas lo que es) que se basa en PHP ejecutado como CLI (o CGI) + unas librerías gràficas "GTK".

También puedes ejecutar PHP como "linea de comandos" bajo CGI .. pero es en este caso quien lo ejecuta no suele ser tu "a mano" sino que lo "levanta" un servidor HTTP (como pueda ser Apache, IIS, PWS, XItami .. etc) y lo "baja" cuando termina la ejecución de lo que se pidió (de un script, programa ... ) que corra bajo CGI.

Por otro lado .. tienes otra versión de instalación de PHP que se denomìna "modulo" .. normalmente módulo de algún servidor HTTP concreto como es Apache. Esa forma de ejecución de PHP bajo "módulo" tiene sus ventajas a nivel de rendimiento de PHP (Perl también puede trabajar como módulo por ejemplo de Apache). En este caso PHP queda siempre "residente" en memoria a la espera de una petición de un script PHP(tu "programa" .php) .. eso consume algo màs de recursos para no perder tiempo en "cargar" el interprete de PHP a cada petición de un script PHP .... por lo mismo plantea otros problemas del tipo de separación de procesos y permisos que obtiene PHP al heredar los que use Apache (o el servidor HTTP que se instale así).

No sé si te habrá quedado algo màs claro la "película" .. pero como veras esto no se aprende en un sólo tutorial de PHP sino en otros más básicos, empezando por ver el "médio" en que desarrollas .. y los servicios, protocoolos y forma de interactuar de estos en general para que sepas si usas PHP con que vas a trabajar.

Un saludo,