Quiero actualizar el div en html para mostrar diferentes contenidos cada semana con solo php y sin el uso de cron. ¿Cómo será posible lograrlo? El siguiente código es para activar el código cada 2 meses el día 10, pero supongo que la lógica será diferente. ¡Si es posible, alguna pista o ejemplo sería genial! ¡Me encantará saber de ti!
// check if current day is 10th and month is an even number if (date('d')==10 && date('m') % 2 == 0) { // get todays-date (format: yyyymmdd) $today = date('Ymd'); // get info about last run $last_run = variable_get('my_last_run', 0); // check last run was not today if ($last_run!=$today) { // set last run to today variable_set('my_last_run', $today); /* Place your code here */ } }Acabo de actualizar tu ejemplo, ahora funcionará todos los próximos lunes:
$weekInYearNumber = (int)date('W'); $weekDayNumber = (int)date('w'); if ($weekDayNumber === 1 && $weekInYearNumber % 2 == 0) { // Rest of your code. }Si quieres hacerlo rápido, puedes contar las semanas desde el primero de enero de 2018 (porque era lunes: cualquier otro año que comience con un lunes estará bien), y luego verifica si ese número es par o impar:
$diffBetweenNowAndFirstJan2018 = time() - strtotime("2018-01-01"); $numberOfWeeksSinceFirstJan2018 = floor($diffBetweenNowAndFirstJan2018 / (60 * 60 * 24 * 7)); $isNumberOfWeeksOdd = ($numberOfWeeksSinceFirstJan2018 % 2 == 1) if($isNumberOfWeeksOdd){ // it's other week time }En una línea:
if( ( (floor((time() - strtotime("2018-01-01")) / (60 * 60 * 24 * 7))) % 2 == 1) ){ // it's other week time }No debe usar la fecha ('W') como dice Vladmir, porque entre la víspera de año nuevo podría obtener dos semanas "impares" consecutivamente.
Si no puede o no quiere usar un trabajo cron para eso (que sería la solución más fácil y recomendada), puede crear un script PHP que pase la mayor parte del tiempo durmiendo y se despierte para verificar la fecha y ejecuta lo que necesites.
Si no le importan las fechas y solo quiere ejecutarlo cada dos semanas, puede hacer que se duerma así:
sleep(14*24*60*60);Haga que su secuencia de comandos ejecute su código después de eso y coloque todo eso dentro de un ciclo infinito. Luego simplemente ejecute el script desde la consola para que no tenga un límite de tiempo de ejecución.
Tenga en cuenta que el script puede dejar de ejecutarse por diferentes motivos, por ejemplo, cuando se reinician los servidores, por lo que debe monitorear el proceso y volver a ejecutarlo automáticamente si no se está ejecutando o se está reiniciando.