{"id":61,"date":"2015-10-12T21:06:06","date_gmt":"2015-10-12T19:06:06","guid":{"rendered":"http:\/\/lab.fawno.com\/?p=61"},"modified":"2022-03-07T01:08:11","modified_gmt":"2022-03-07T00:08:11","slug":"","status":"publish","type":"post","link":"https:\/\/lab.fawno.com\/en\/2015\/10\/12\/programar-una-espera-hasta-un-momento-determinado\/","title":{"rendered":"","raw":""},"content":{"rendered":"","protected":false,"raw":""},"excerpt":{"rendered":"","protected":false,"raw":""},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_coblocks_attr":"IBM Plex Sans,","_coblocks_dimensions":"","_coblocks_responsive_height":"","_coblocks_accordion_ie_support":"","_editorskit_title_hidden":false,"_editorskit_reading_time":0,"_editorskit_typography_data":[],"_editorskit_blocks_typography":"","_editorskit_is_block_options_detached":false,"_editorskit_block_options_position":"{}","_es_post_content":"\n
En ocasiones necesitamos que un script realice una tarea determinada cada cierto tiempo o a partir de un momento (fecha\/hora) determinados.<\/p>\n\n\n\n
En linux es f\u00e1cil realizar esto mediante cron<\/a>, sin embargo el programador de tareas de Windows es m\u00e1s farragoso de configurar para estos menesteres. Adem\u00e1s puede que no nos interese\/guste que el script est\u00e9 continuamente arrancando\/parando.<\/p>\n\n\n\n Hasta ahora realizaba este tipo de bucles para estas tareas:<\/p>\n\n\n\n En este caso es un bucle infinito, pero eso ahora no importa, el Ayer encontr\u00e9 una funci\u00f3n maravillosa: time_sleep_until()<\/a><\/p>\n\n\n\n Tal y como dice la documentaci\u00f3n esta funci\u00f3n dejar\u00e1 el script en pausa hasta que llegue el momento determinado en la funci\u00f3n:<\/p>\n\n\n\ndo {\n \/\/ anything\n sleep($interval);\n} while (true);<\/pre>\n\n\n\n
sleep($interval);<\/code> (l\u00ednea 3) es el tiempo de espera entre dos ejecuciones del bucle... pero podemos encontrarnos con que si
$interval = 300;<\/code> (segundos) luego a la hora de la verdad se nos ir\u00e1 a\u00f1adiendo alg\u00fan segundo que otro entre las ejecuciones del bucle... y esto puede no importar o todo lo contrario.<\/p>\n\n\n\n
$next = time();\ndo {\n \/\/ anything\n $next = strtotime('+5min', $next);\n time_sleep_until($next);\n} while (true);<\/pre>\n\n\n\n