He investigado mucho sobre esto pero no puedo encontrar una respuesta satisfactoria; ¿Cómo creo un script PHP que generará un nuevo número cada día? Obviamente, estoy usando esto por una razón distinta a la de generar un número aleatorio diariamente, pero no entraré en esa razón, solo hará que esta pregunta sea más complicada. Entonces pregunto esto: ¿Cómo genero un número aleatorio que cambiará cada día en PHP? Usar MySQL no será un problema, pero debe ser automático para que no tenga que cambiarlo manualmente todos los días. (Aquí está mi 'script' para generar un número aleatorio)
<?php echo rand(1,100) ?>
Cualquier respuesta es apreciada, gracias - Hugh
Use la función time()
para generar semilla, luego use rand regular. De esta forma no deberías guardarlo en ningún lado y siempre podrás regenerarlo cuando lo necesites.
function randomEveryDay() { $now = time(); $today = $now - ($now % 86400); //86400 = 1 day in seconds srand($today); return rand(); }
O un ejemplo más interesante sin azar en absoluto.
function randomEveryDay() { $now = time(); $today = $now - ($now % 86400); $hash = sha1('salt string'.$today); return intval('0x' . substr($hash, 6, 8)); }
Todos los días obtendrá el mismo número en $today
, luego use cualquier función hash criptográfica/no criptográfica para generar "aleatorio".
Esta es una tarea bastante simple siempre que comprenda los conceptos básicos de crontabs.
Paso uno: crea el guión. Básicamente, esto será lo que crea el "texto" y luego lo ingresa en la base de datos a través de mysqli. Por ejemplo, si estamos generando un número aleatorio, lo que tienes hasta ahora es bueno, solo necesitarás insertarlo en una tabla de la base de datos. Recomiendo usar una marca de tiempo para indicar en qué día se generó
Paso dos: crea un cronjob. Use el servidor crontab para ejecutar una tarea todos los días, esto se puede hacer agregando esto al archivo cron: Esto ejecutará un cron cada nuevo día.
00 01 * * * php path/to/your/generate.php
Paso tres Obtenga el resultado de la base de datos utilizando la fecha actual. Si necesita mostrar ese texto, extráigalo de la base de datos usando el día actual de date() or DateTime
Es imposible dar una buena respuesta sin saber exactamente lo que quieres hacer, por lo que generará un nuevo número todos los días:
echo date('Ymd');