|
Este artículo es una traducción autorizada
de una serie de 2 que realizó David Stockton
para la revista eServer
Magazine.
Copyright 2003 - David Stockton.
Este artículo apareció por primera vez
en IBM
eServer Computing Magazine en el mes de Octubre
2003.
Puedes ver la versión original de este artículo
aquí
En la primera parte, he
tratado la temática de configuración y
puesta en marcha de PHP en tu iSeries. En esta segunda,
ofreceré trucos y exploraré algunas cuestiones
que PHP puede potencialmente resolver.
Incluso si eres nuevo en PHP, hay muchas posibilidades
de que lo encuentres familiar: La sintaxis del PHP es
similar a C++, por lo que tanto a los usuarios de C++,
C, Java y Perl PHP les parecerá sencillo.
Condicionales y loops
en la primera parte hice una introducción
a la función "echo" y al operador de
asignación (=). Sin embargo poco podrás hacer
con ellos.Y ahí es donde los condicionales y
loops entran en juego.
Este ejemplo introduce varios conceptos nuevos:
<html><head><title><?= $_GET['title']
?></title>
<body>
<?php
if (isset($_GET['printme'])) {
echo ("<pre>$_GET['contents']</pre>");
} else {
for ($i = 0; $i < 10; $i++) {
echo ($i . "<br>\n");
}
}
?>
</body>
</html>
La primera linea contiene este trozo de código:
<?= $_GET['title'] ?>. Si lo desglosamos vemos
que mientras que los últimos ejemplos incorporaban
etiquetas "<?php", está linea contiene
"<?= ", lo que es un atajo para <?php
echo ( ); ?>. Lo que esté entre las
etiquetas "<?= " es lo que se imprimirá
en la página web.
Otro concepto nuevo es $_GET['title'],
un array que contiene una lista de las variables que
se envían a la página web con el método
GET de HTTP. Supón que guardas este código
en el IFS bajo el directorio raíz del servidor
web como webpage.php y lo haces accesible bajo este
URL:
http://mywebserver/webpage.php?title=Programando%20PHP
&contents=Programar%20PHP%20es%20divertido%21&printme=true
PHP extrae las variables de este URL y las pone en
el array $_GET. Cuando se ejecuta el código PHP,
el título de tu página web es programando
PHP y la frase programar PHP es divertido!
aparece en la página. %20 en la URL
representa un espacio y %21 es la codificación
para el signo de admiración.
La sintaxis de la sentencia "if" (por ejemplo
la que está en la cuarta línea del código) es
similar a la utilizada en C, Java o Perl. El código
entre paréntesis que siguen al if
comprueba si es cierto. Esta línea también contiene
una función llamada isset(),
que determina si la variable contiene algún valor.
PHP encuentra el valor de $_GET['printme'] true,
y el código dentro de la sentencia if
se ejecuta. En este caso, la 5ª línea de
código imprimirá los contenidos de la
variable $_GET['contents'] dentro de algunas etiquetas
<pre>.
Los resultados son absolutamente diferentes si accedes
a la misma página web pero sin el parámetro
“printme”:
http://mywebserver/webpage.php
en este caso, la variable $_GET['printme'] no está,
por eso la sentencia "if" la avalúa
como falso, y ejecuta el código que hay en la
declaración "else".
for ($i = 0; $i < 10; $i++) {
echo ($i . <br>\n);
}< /SPAN >
La sintaxis para for es similar también
a los lenguajes mencionados anteriormente. En este caso,
el contador $i, es inicializado a 0.
Cada vez que el loop se ejecuta, el contador se incrementa
en uno el loop continuará mientras $i sea
menor que 10-. Este código hace salir los número
de uno a nueve en líneas separadas.
Ejemplos de Scripts
PHP ofrece una colección amplia de funciones, y
su sistema de API's es también uno de los más bien documentados
que he visto. Según lo observado en la parte 1, el Web
site de PHP
ofrece abundante información sobre cadenas, bases de
datos, números, tipos variables, series, expresiones
regulares y otras funciones de de PHP. Si deseas hacer
algo con cierta variable, la función probablemente ya
está construida en PHP.
Considera estos dos scripts de ejemplo en PHP, que utilizan
el API.
El script WRKACTJOB - Ejemplo
1 este ejemplo contiene el código que duplica la
salida del trabajo con los trabajos activos del comando
WRKACTJOB en tu navegador. Esta script simple coge la
salida impresa de WRKACTJOB y la plasma en tu navegador.
El único nuevo concepto aquí es el operador (`), que
ejecuta un comando del sistema y devuelve la salida
como una secuencia. En el ejemplo
1 del código, la secuencia $output recoge la salida
de WRKACTJOB.
(Nota: Como PHP se compila en OS/400 PASE o AIX los
comandos del sistema se deben ejecutar como lo harías
en el entorno OS/400 PASE. En este caso, debes introducir
en la linea de comandos la sentencia "system WRKACTJOB".
Los comandos disponibles directamente en OS/400 PASE
como "ls" no necesitan el prefijo "system")
La salida del código de ejemplo
1 debe ser similar a la figura
1. Este script se mejora en la sección siguiente.
Script para visualizar los jobs de trabajos
El código de ejemplo
2 ofrece otro ejemplo que permite a los usuarios
visualizar los logs de trabajo en un navegador. Los
usuarios pueden seleccionar la información del log de
trabajo que desean ver on-line o bien entrando la información
necesaria (nombre de trabajo, nombre del usuario y número
de trabajo) o seleccionando un trabajo de la lista de
WRKACTJOB. No es necesario modificar el script.
La salida del código de ejemplo
2 debe parecerse a la figura
2, asumiendo que le darás al script un nombre
de trabajo válido, un número y un usuario.
El código del script para visualizar los jobs
de trabajos no es mucho más complicado que el script
de WRKACTJOB. La principal diferencia es que ahora se
utilizan funciones para agrupar el código según
el propósito y para comprobar el valor del usuario.
En este punto sin embargo, el valor usuario se comprueba
solo para comprobar que se ha realizado una entrada.
No se comprueba que la información sea correcta
o que no sea maliciosa. (Nota: Para utilizar este script
externamente, necesitas añadir código para verificar
la entrada del usuario. Por lo menos, yo añadiría
comprobaciones que aseguren que los nombres de usuario
y de trabajo contienen menos de 10 caracteres, son alfanuméricos
y que el número de trabajo está dentro de cierto rango
numérico. Esto no es difícil de hacer con PHP.
Sin estos cambios mínimos, yo no pondría este
script de ejemplo en un sitio web externo.)
Mejorando los script WRKACTJOB y visualizar los
jobs de trabajos
El código de ejemplo
1 y del ejemplo
2 son útiles, pero, como habrás notado,
requieren incorporar manualmente la información del
trabajo. Sin embargo, las buenas noticias, son que este
proceso se puede automatizar integrando estos códigos
de ejemplo. Analiza cada línea de la escritura de WRKACTJOB
y localiza el nombre de trabajo, el número y el usuario.
Entonces crea un enlace al ejemplo
2 con las variables completadas. Esto permite que
el archivo nuevo produzca enlaces a los registros del
job log donde sea apropiado (véase el ejemplo del código
3). Fíjate que han desaparecido los saltos
de página y encabezados extra que aparecían
en el ejemplo
1 del código. De hecho, han desaparecido las primeras
9 líneas del WRKACTJOB, junto con los encabezamientos,
saltos de página y lo que es ahora el primer
subsistema. Después de eso, la única salida debería
ser trabajos o subsistemas. La nueva salida debe parecerse
a la figura
3.
Trabajando con PHP
PHP es muy fácil de implementar, y, yo creo que puede
simplificar muchas tareas de programación y administración
de los iSeries. Ahora que has probado lo que PHP puede
hacer, ya estas listo para ponerlo a trabajar para ti.
Veamos algunas cosas que puedes hacer con los dos ejemplos
explicados. Puedes hacer:
- Alternar los colores en las líneas de wrkactjob.php
para hacer la lectura más fácil
- Quitar información no deseada e innecesaria de la
salida de WRKACTJOB.
- Ver los ficheros de diario asociados (lo hacemos
para nuestro OneWorld jde.log y los archivos de jdedebug.log)
- Ver WRKACTJOB por subsistema - esto requeriría
solo un pequeño cambio que permita a los usuarios
especificar los subsistemas que desean ver
- Destacar o mostrar solamente ciertas líneas según
sus contenidos (ejemplo., Destacar cada trabajo que
pertenece a determinado usuario, o determinado estado
del trabajo)
- Saltar automáticamente hacia o destacar los errores
en un registro de trabajo
- Solicitar la finalización de un trabajo
Puedes también crear scripts PHP que te permitan:
- Ver ficheros de spool en el Web
- Arrancar o parar subsistemas
- Ver o editar ficheros de la base de datos
Con un poco de suerte, ahora estás evaluando
implementar PHP en tu iSeries. Cuéntanos como
te ha ido en nuestros foros Programación
PHP contra el iSeries AS400 y Configuración
PHP en iSeries AS400.
Febrero 2004
Este artículo es una traducción autorizada
de una serie de 2 que realizó David Stockton
para la revista eServer
Magazine.
Copyright 2003 - David Stockton.
Este artículo apareció por primera vez
en IBM
eServer Computing Magazine en el mes de Octubre
2003.
Puedes ver la versión original de este artículo
aquí
Lista de recursos PHP

|