Как запускать PHP-скрипт каждые 5-10 минут без cron, perl и т. Д.? - PullRequest
17 голосов
/ 07 декабря 2009

Я хочу запускать скрипт каждые 5 минут на сервере. У меня нет никаких привилегий администратора для выполнения работы cron и т. Д.

Я не очень хороший программист php, поэтому этот вопрос может показаться странным, но если вы понимаете, пожалуйста, сообщите мне решение.

Ответы [ 9 ]

16 голосов
/ 07 декабря 2009

Похоже, ваше единственное решение - "Крон Бедного".

Что вы делаете, это создаете скрипт, который вы помещаете поверх каждой страницы, который запускается только каждые 5 минут. Это не будет гарантированно запускаться каждые 5 минут. Поскольку требуется, чтобы кто-то посещал страницы с «кроной бедняка», и если никто не посещал более 5 минут, он не запускается, пока кто-то не сделает.

Пример кода:

<?php
 // load the last run time from a file, database, etc
 if(time() >= $last_run + (60 * 5)) { // 60 * 5 is 5 minutes
     // do your task here
     // save the last run time to a file, database, etc
 }
15 голосов
/ 07 декабря 2009

Я использую webcron.org , который является доступным онлайн-сервисом. Для меня преимущество в том, что у меня есть обзор всех запланированных задач на всех серверах.

11 голосов
/ 07 декабря 2009

Вот еще один «взлом». Поскольку вы не можете запустить cron на компьютере, на котором находится скрипт, возможно, вы можете запустить cron на другом компьютере.

Если вы можете ... настроить задание cron для запуска каждые 5 минут ... Задание может быть простым PHP-скриптом, который вызывает ваш другой PHP-скрипт. Вы можете использовать cURL для вызова вашего скрипта (если этот скрипт обслуживается веб-сервером)

3 голосов
/ 07 декабря 2009

См. это и это .


(отредактировано для включения содержимого по ссылкам.)

  • PHP Cron Daemon управляется базой данных для планирования выполнения задачи (например, cron). Он может анализировать файл crontab и извлекать определения планирования заданий в таблицу базы данных MySQL. Когда приходит время запустить запланированное задание, он выполняет команду задания в определении crontab как код PHP как отдельный процесс. Выходные данные PHP-кода задания также хранятся в таблице базы данных.
2 голосов
/ 02 ноября 2015

Вот как я это делаю

if(date('i', time())%5==0) {
// run this code
}
1 голос
/ 09 июля 2015

Мое решение, если ваш сервер Linux. Сделайте скрипт bash:

#bin/bash
while [ true ]
do
     //do whatever you want, use curl, lynx to your page...
     sleep 5m
done

Запустите его, и если ваш сервер не перезагрузится или скрипт не убьет вас, все будет в порядке.

Это не хорошее решение, но работает.

1 голос
/ 11 марта 2014

Я уверен, что эти инструменты могут помочь вам с вашим запросом:

SetCronJob - www.setcronjob.com

Cronless - cronless.com

EasyCron - www.easycron.com

Онлайн Cron Jobs - www.onlinecronjobs.com

Corntab - www.corntab.com

getCron - www.getcron.com

Однако не стоит зависеть от другого сайта.

Танки до Google

1 голос
/ 07 декабря 2009

Что-то вроде:

ini_set('max_execution_time', 'sometime'); 
while(1){
    //do something
    sleep(sometime);
}

Хотя я не рекомендую это делать. Время перейти на сервер, который отвечает вашим потребностям.

0 голосов
/ 14 ноября 2017

Я бы порекомендовал этот сервис, я использовал его сегодня, и, похоже, он работает хорошо.

Крон-Job

и да, это бесплатно!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...