как обновить файл без крона?

Тема в разделе "PHP", создана пользователем 999udaw, 11 окт 2009.

Статус темы:
Закрыта.
Модераторы: latteo
  1. 999udaw

    999udaw Писатель

    Регистр.:
    8 сен 2008
    Сообщения:
    36
    Симпатии:
    0
    Привет всем я только учусь просьба помочь поделиться знаниями и заранее извиняюсь за нубские вопросы.
    На сервере отсутствует крон.
    сторонние кроны такие как web-cron.ru , www.cron-server.de почему то не работают или прекратили свою работу. задача такая . для обновления базы сайта надо раз в сутки запускать XML файлик файлик.xml.
    можно конечно самому заходить и запускать вручную. но хотелось бы максимально автоматизировать.
    знаю что есть возможность запуска задачи при входе посетителя на сайт. но просидел весь день в поисковике так и не нашел . покажите знатоки как это реализуется на PHP.
    может есть еще другие способы, скрипты?
     
  2. Squoll2

    Squoll2 Постоялец

    Регистр.:
    2 июн 2009
    Сообщения:
    80
    Симпатии:
    15
    Так в чём проблема найти другие крон сервисы. В интернете их полно вот например хороший и недаёт сбоев
    http://www.wsscheduler.com/
     
  3. 999udaw

    999udaw Писатель

    Регистр.:
    8 сен 2008
    Сообщения:
    36
    Симпатии:
    0
    просто все что я нашел это эти 2 да еще 1 французский
    спасибо буду пробовать. но хотелось бы узнать как это можно было бы реализовать на php
     
  4. omega

    omega Создатель

    Регистр.:
    21 янв 2008
    Сообщения:
    30
    Симпатии:
    10
    Вот написал очень простой пример, он выполняет проверку при входе любого пользователя на сайт.

    Его поместить в index.php
    PHP:
    // эти переменные вынести в конфиг
    $interval 24 60 60// интервал между действиями в секундах
    $lock_file "/tmp/.cron"//путь к файлу куда есть права на запись для вебсервера
    if (file_exists($lock_file)) {
        
    // текущее время
        
    $time_sec=time();
        
    // время изменения файла
        
    $time_file=filemtime($lock_file);
        
    // сколько прошло времени, сек
        
    $time=$time_sec-$time_file;
        if (
    $time >= $interval){
            echo 
    'Do!'// эту строку поменять на вызов функции с задачей для крона
            
    file_put_contents ($lock_file$time_sec);
        }
    } else {
        echo 
    'Do!'// эту строку поменять на вызов функции с задачей для крона
        
    file_put_contents ($lock_file$time_sec);
    }
    Последний else срабатывает 1 раз когда файл $lock_file еще не существует.
    PS Если посетителей очень много, то возможно нужно выполнять эту проверку реже например для каждого 10го посетителя.
     
  5. 999udaw

    999udaw Писатель

    Регистр.:
    8 сен 2008
    Сообщения:
    36
    Симпатии:
    0
    спасибо теперь я знаю больше
    и если нетрудно можно примерчик по запуску относительно 10 посетителя
     
  6. omega

    omega Создатель

    Регистр.:
    21 янв 2008
    Сообщения:
    30
    Симпатии:
    10
    Еще вариант:
    Вынести все задачи по крону в отдельный php файл
    Потом с другого сервера, где есть нормальный крон, дергать его обычным wget, или из скрипта.
    Вот еще один:
    Вешаете на страницу невидимую картинку <img src="cron.php">
    В скрипт cron.php положите тот код что я привел выше.
     
  7. stealthdebuger

    stealthdebuger Механик

    Administrator
    Регистр.:
    25 авг 2008
    Сообщения:
    624
    Симпатии:
    1.379
    Лучшим вариантом, дабы не использовать сторонние ресурсы, будет такой:
    1. Пишем демона, который будет висеть на определенном порту и выполнять необходимые действия с файлом.
    2. В index.php пытаемся получить ответ от демона. Если ответа нет - запускаем демона.

    Нагрузки на сервер не будет практически никакой, единственное что необходимо - уточнить у хостера какой порт можно использовать для таких целей, или же опытным путем установить это.

    P.S. Если необходимо - пример демона могу дать.
     
Статус темы:
Закрыта.