La pregunta tipo de lo dice todo - no es una función que hace lo mismo que el JavaScript función setTimeout() para PHP? He buscado php.net, y parece que no puedo encontrar ninguna ...¿Existe una función similar a setTimeout() (JavaScript) para PHP?
Respuesta
No hay forma de retrasar la ejecución de parte del código de en el script actual. Tampoco tendría mucho sentido, ya que el procesamiento de un script PHP tiene lugar completamente en el lado del servidor y usted simplemente retrasaría la ejecución general del script. Hay sleep()
pero eso simplemente detendrá el proceso por un cierto tiempo.
Puede, por supuesto, programar un script PHP para que se ejecute en un momento específico utilizando trabajos cron y similares.
Es un poco difícil de explicar, lo que quería es exactamente detener el guión :) Básicamente, lo que quiero hacer es "bromear" con uno de mis amigos. He hecho una entrada donde mecanografía tu nombre y cuando presentas una sala de chat se simula y para hacerlo más realista, quiero los mensajes del extraño, mi amigo está "hablando", para aparecer uno por uno si sabes lo que quiero decir :) – Latze
Los eventos programados no tienen sentido porque la secuencia de comandos se ejecuta en el servidor? No estoy siguiendo la discusión. Ciertamente son menos útiles en PHP debido a la ausencia de simultaneidad, pero es útil tener un script que hace algo después de un período de tiempo específico o en un determinado momento. – Artefacto
@Latze que suena como algo que te gustaría hacer usando JavaScript en el lado del cliente, ¿no? –
Existe la función sleep
, que pausa la secuencia de comandos durante un tiempo determinado.
Véase también usleep
, time_nanosleep
y time_sleep_until
.
, sería bueno simular este tipo de código en php: http://hastebin.com/rujakezuco.lisp. el sueño está bloqueando, los tiempos muertos no lo están. – Dmitry
PHP no se basa en eventos, por lo que un setTimeout no tiene mucho sentido. Ciertamente puede imitarlo y, de hecho, alguien ha escrito un Timer class que podría usar. Pero tendría cuidado antes de comenzar a programar de esta manera en el lado del servidor en PHP.
Pero php tiene las herramientas para hacer que su script específico sea controlado por eventos. por ejemplo, ejecutando php a través de la consola es posible que desee programar múltiples eventos en diferentes momentos, en este punto tiene sentido tener tiempos de espera excedidos. – Dmitry
No realmente, pero podría probar el tick count function.
A menos que esté utilizando AJAX para tener live
solicitudes, PHP no sería el idioma preferido para este problema. Los scripts PHP no hacen hang
y esperan otra respuesta. Ellos no son persistentes. Javascript sería requerido.
Incluso para una broma, una función javascript AJAX emparejada con un script PHP para analizar la entrada y responder en consecuencia sería exactamente lo que necesitaría. Incluso puede vincular esto con la función sleep
en php para hacerlo más realista. Además, prepararía un montón de declaraciones diferentes para que el servidor las analizara, podría ir tan lejos como para establecer la cantidad de sleep
tiempo requerido para cada declaración. Por ejemplo:
base de datos MySQL Ejemplo:
| ID | SLEEP | STATEMENT |
| 1 | 3 | Hello |
| 2 | 10 | I have been alright, nothing new. |
| 3 | 20 | This is a really long message that takes 20 seconds to type |
por lo que podría analizar de la siguiente manera:
$query = mysql_query("SELECT * FROM `responses` WHERE `id`='3'");
$array = mysql_fetch_array($query);
sleep((int)$array['sleep']); //convert sleep time to integer, sleep.
die($array['statement']); //print the statement back to AJAX function
si necesita realizar una acción después de ejecutar código PHP que puede hacerlo con un eco
echo "Success.... <script>setTimeout(function(){alert('Hello')}, 3000);</script>";
así que después de un tiempo en el cliente (navegador) puede hacer otra cosa, como un redirigir a otra secuencia de comandos PHP, por ejemplo, o eco de una alerta
http://php.net/manual/en/class.evtimer.php es probablemente lo que está buscando, puede tener una función llamada durante intervalos establecidos, similar a setInterval en javascript. es una extensión pecl, si tiene whm/cpanel, puede instalarlo fácilmente a través de la página de instalación del software/extensión pecl.
No había notado que esta pregunta es de 2010 y la clase evtimer comenzó a codificarse en 2012-2013.así como una actualización de una pregunta anterior, ahora hay una clase que puede hacer esto similar a javascripts settimeout/setinterval.
Un par de cosas que me gustaría tener en cuenta sobre los temporizadores en PHP:
1) Timers en PHP tiene sentido cuando se utiliza en las secuencias de comandos de larga duración ( demonios y, tal vez, en secuencias de comandos de la CLI). Entonces, si no está desarrollando ese tipo de aplicación, entonces no necesita los temporizadores.
2) Los temporizadores pueden ser bloqueantes y no bloqueantes. Si está usando sleep()
, entonces es un temporizador de bloqueo, porque su script simplemente se congela por una cantidad de tiempo específica. Para muchas tareas, bloquear temporizadores está bien. Por ejemplo, enviando estadísticas cada 10 segundos. Está bien para bloquear el guión:
while (true) {
sendStat();
sleep(10);
}
3) contadores de tiempo de bloqueo no tiene sentido sólo en aplicaciones accionadas por eventos, como WebSocket-servidor. En dichas aplicaciones, un evento puede ocurrir en cualquier momento (por ejemplo, una conexión entrante), por lo que no debe bloquear su aplicación con sleep()
(obviamente). Para este propósito, hay bibliotecas de bucles de eventos, como reactphp/event-loop, que le permite manejar varias transmisiones sin bloqueos y también tiene la función de temporizador/intervalo.
4) Tiempos de espera sin bloqueo en PHP son posibles. Se puede implementar mediante la función stream_select()
con parámetro de tiempo de espera (ver cómo se implementa en reactphp/event-loop StreamSelectLoop::run()).
5) Hay extensiones PHP como libevent
, libev
, event
que permiten la implementación temporizadores (si quieres ir hardcore)
- 1. JavaScript setTimeout setInterval dentro de una función
- 2. ¿Existe algo similar a gsub en javascript?
- 3. ¿Existe una función similar a "andmap" en clojure?
- 4. La función setTimeout de Javascript no llama a
- 5. Formas de pago equivalentes a javascript setTimeout
- 6. cómo ejecutar una función javascript asincrónicamente, sin usar setTimeout?
- 7. para llamar periódicamente a una función de Javascript
- 8. javascript setTimeout call error
- 9. ¿Existe una función equivalente de PHP para Python os.path.normpath()?
- 10. Undef'ing una función similar a la macro
- 11. para la ejecución de Javascript con setTimeout()
- 12. Equivalente a jQuery o JavaScript de la función PHP strpos para buscar cadena en una página
- 13. función inet_aton similar para IPv6
- 14. setTimeout en la función asíncrona
- 15. Crear una referencia a una variable (similar a "= &" de PHP)?
- 16. es "->" en php similar (a.k.a equivalente) a "." en javascript?
- 17. Recursión de Javascript settimeout
- 18. llamada de función Javascript setTimeout con argumento de evento?
- 19. "Inicio" de Javascript similar a python.org?
- 20. Llamar a la función php desde JavaScript
- 21. ¿Existe un serializador CSV? (similar a XmlSerializer)
- 22. YUICompressor o similar en PHP?
- 23. ¿Esta función existe en PHP?
- 24. JavaScript setTimeout() no esperará a ejecutar?
- 25. si la función no existe función de escritura - Javascript
- 26. Javascript: Función de llamada, pase matriz de argumentos, similar a la funcionalidad de setTimout()
- 27. Algo similar a PHP SimpleXML en Python?
- 28. Java: popen() - función similar?
- 29. SetTimeout no retrasa una llamada de función
- 30. Variables en una función setTimeout (jQuery)
@KennyTM - ¿Por qué es importante ...? – Alexander
@TheLife para que las personas puedan encontrar una solución real para el problema del OP. :) –