entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

1voto

Ejecución de scripts PHP en servidor Windows

Buenas, tenemos un script PHP que debe ser ejecutado todas las noches a las 21.00. He intentado programar la ejecución de ese código PHP con las tareas programadas de Windows Server haciendo que se abra el chrome con el argumento de la página PHP (http://www.web.com/pruebas.php) y no me funciona.

Sabéis alguna otra forma de hacer esto? He encontrado muchísima información de como hacer esto pero utilizando un servidor Linux (el cual no tenemos).

Alguna idea?

SaludoS!

0voto

bl4z3r comentado

¿El script que quieres ejecutar esta en el servidor?

0voto

ankeorum comentado

Correcto, en el mismo servidor IIS tenemos alojado el script que quiero ejecutar.

2 Respuestas

3votos

carlossevi Puntos63580

Los scripts de PHP pueden ser scripts de consola ejecutados desde la línea de comandos si en lugar de invocarse desde una petición http (en ese caso es el servidor web quien maneja la petición y ejecuta el script). Para ello se utiliza PHP-CLI.

Un ejemplo de cómo se invoca un script en Windows:

C:\PHP5\php.exe -f "C:\PHP Scripts\script.php" -- -arg1 -arg2 -arg3

Hay que tener en cuenta que eso ejecuta un script pero no simula una petición http a tu servidor web. Si lo que necesitas es hacer una petición http para que se desencadene cierta lógica en el framework que se encarga de atenderla (por poner un ejemplo) esa solución no te sirve. En ese caso te recomendaría hacer uso de wget, que también está disponible en Windows, o algún otro software similar. Un ejemplo:

C:\Ruta\wget.exe http://www.web.com/pruebas.php

0voto

ankeorum comentado

No entiendo lo de c:\ruta\wget que creo que es lo que tengo que usar.

Cuando intento usar wget en el powershell me dice:
"wget : The term 'wget' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again."

No entiendo como no hay ninguna forma más sencilla de hacer esto, la verdad.

0voto

carlossevi comentado

Esta es la página oficial de wget donde puedes encontrar documentación. Wget es un ejecutable que debes tener descargado. En lugar de C:\Ruta\wget.exe tienes que poner la ruta donde tienes localmente el ejecutable.

0voto

ankeorum comentado

Funcionó! Muchas gracias!

0voto

ankeorum comentado

Ahora debería crear un archivo bat que me ejecutada el comando no? Y en el programador de tareas simplemente ejecutar ese bat no?

Solucionado, he creado un bat y en el programador de tareas llamo a ese archivo. Espero que funcione correctamente cuando la tarea se ejecute a su hora. No tiene por qué no funcionar.

0voto

ankeorum comentado

@carlossevi no entiendo por qué al pasar el bat a tarea programada no se me ejecuta correctamente, haciendo doble click en el bat se ejecuta la tarea correctamente, tarea que contiene el siguiente código:

c:\wgetfolder\bin\wget.exe http://web.com/script.php

Y en el histórico de las tareas programadas me dice:

Task scheduler successfully completed task "php script", instance "{1649ade1-4475-ea22-6598-56689a88aah1}", action c:\windows\system32\cmd.exe" with return code 1.

1voto

carlossevi comentado

Por desgracia ese problema suele pasar y da dolores de cabeza. Revisa este par de puntos:

  1. Configuración del usuario que ejecuta la tarea. Comprueba que el usuario tiene los permisos necesarios y que las pruebas las estás haciendo con el mismo usuario:

Ejecutar como usuario

  1. Iniciar acción en la ruta adecuada. Aunque es un parámetro opcional, muchas veces da problemas no tener informada la ruta en la que se ejecuta la tarea:

Iniciar en

0voto

ankeorum comentado

Lo intento y mañana te digo, se ejecuta todas las noches a las 21:50.

Muchas gracias por la ayuda!

0voto

ankeorum comentado

@carlossevi muchísimas gracias por tu ayuda, funcionó esta noche. Espero que siga así!

1voto

bl4z3r Puntos16850

Tu problema radica que quieres ejecutar el script desde el navegador cuando puedes hacerlo desde la misma consola estando en el servidor.

PHP tiene un interprete de consola que te permite ejecutar script sin la necesidad que sea desde un navegador. En ejemplo de ejecutar un script seria:

php.exe -f fichero.php

Ahora que sabes esto, solamente tienes que modificar la tarea que hiciste para se ejecute con el cliente PHP que esta en el directorio donde se instaló y walá.

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta