Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Скрипт Запускает сам себя?


Автор: Frikazoid 10.8.2002, 00:37
Привет All. Как хорошо, что форум снова работает!!!!
У меня есть проблема! Кто может подсказать как заставить скрипт запускать самого себя?
Т.е. мне надо, чтоб через определённое время(к примеру каждые 2 часа) мне на мыл скрипт отправлял серверные логи! Или другую инфу! Инфу на мыл отправить я и сам могу, а вот с остальным проблемы...

Автор: Wowa 10.8.2002, 02:34
скрипт должен запускаться на сервере через CRON

Автор: Frikazoid 10.8.2002, 03:02
А подробней? Я в пхп недавно! Если кинешь пример, то буду благодарен!

Автор: Wowa 10.8.2002, 04:00
Цитата(Frikazoid @ 09.8.2002, 18:02)
А подробней? Я в пхп недавно! Если кинешь пример, то буду благодарен!

Запуск скрипта в определенное время средствами PHP сделать просто невозможно.

Использую для этого CRON
Вот документация:

Цитата

CRON(8)                                                   CRON(8)

NAME
      cron - daemon to execute scheduled commands (Vixie Cron)

SYNOPSIS
      cron

DESCRIPTION
      Cron  should be started from /etc/rc or /etc/rc.local.  It will return immediately, so you don't need to start it
      with '&'.

      Cron searches /var/spool/cron for crontab files which are named after accounts in /etc/passwd; crontabs found are
      loaded  into  memory.  Cron also searches for /etc/crontab and the files in the /etc/cron.d/ directory, which are
      in a different format (see crontab(5)).  Cron then wakes up every minute, examining all stored crontabs, checking
      each  command to see if it should be run in the current minute.  When executing commands, any output is mailed to
      the owner of the crontab (or to the user named in the  MAILTO  environment  variable  in  the  crontab,  if  such
      exists).

      Additionally,  cron  checks  each minute to see if its spool directory's modtime (or the modtime on /etc/crontab)
      has changed, and if it has, cron will then examine the modtime on  all  crontabs  and  reload  those  which  have
      changed.   Thus cron need not be restarted whenever a crontab file is modified.  Note that the Crontab(1) command
      updates the modtime of the spool directory whenever it changes a crontab.

SEE ALSO
      crontab(1), crontab(5)

AUTHOR
      Paul Vixie <[email protected]>

                        20 December 1993                 CRON(8)
~
[root@ns root]# man crontab
CRONTAB(1)                                             CRONTAB(1)

NAME
      crontab - maintain crontab files for individual users (V3)

SYNOPSIS
      crontab [ -u user ] file
      crontab [ -u user ] { -l | -r | -e }

DESCRIPTION
      Crontab  is  the  program used to install, deinstall or list the tables used to drive the cron(8) daemon in Vixie
      Cron.  Each user can have their own crontab, and though these are files in /var, they  are  not  intended  to  be
      edited directly.

      If  the  allow  file  exists, then you must be listed therein in order to be allowed to use this command.  If the
      allow file does not exist but the deny file does exist, then you must not be listed in the deny file in order  to
      use  this  command.  If neither of these files exists, then depending on site-dependent configuration parameters,
      only the super user will be allowed to use this command, or all users will be able to use this command.

      If the -u option is given, it specifies the name of the user whose crontab is to be tweaked.  If this  option  is
      not  given,  crontab  examines  "your" crontab, i.e., the crontab of the person executing the command.  Note that
      su(8) can confuse crontab and that if you are running inside of su(8) you should always use  the  -u  option  for
      safety's sake.

      The  first  form  of  this command is used to install a new crontab from some named file or standard input if the
      pseudo-filename ``-'' is given.

      The -l option causes the current crontab to be displayed on standard output.

      The -r option causes the current crontab to be removed.

      The -e option is used to edit the current crontab using the editor specified by the VISUAL or EDITOR  environment
      variables.  After you exit from the editor, the modified crontab will be installed automatically.

SEE ALSO
      crontab(5), cron(8)

FILES
      /etc/cron.allow
      /etc/cron.deny

STANDARDS
      The  crontab  command conforms to IEEE Std1003.2-1992 (``POSIX'').  This new command syntax differs from previous
      versions of Vixie Cron, as well as from the classic SVR3 syntax.

DIAGNOSTICS
      A fairly informative usage message appears if you run it with a bad command line.

AUTHOR
      Paul Vixie <[email protected]>



P.S. Будут конкретные вопросы - пиши.

Автор: Frikazoid 10.8.2002, 04:18
Мне не нужно его запускать в определённое время! Мне нужно запустить его свего один раз! Затем он сам уже должен крутится в вечном цикле, с задержками(к примеру чтоб уснул на сутки)! Я где то видел такое! Эта фишка обсуждалась на погибшем форуме(помоему).

Автор: Sattu 10.8.2002, 04:24
Хм...
Интересный способ объяснить...
Скинуть дамп мана !!!
----------------------------------
Frikazoid, CRON работает только под *nix (во всяком случае аналогов под винды не видел). Если у тебя Винды - ЗАБУДЬ.

Автор: Wowa 10.8.2002, 04:30
Цитата(Frikazoid @ 09.8.2002, 19:18)
Мне не нужно его запускать в определённое время! Мне нужно запустить его свего один раз! Затем он сам уже должен крутится в вечном цикле, с задержками(к примеру чтоб уснул на сутки)! Я где то видел такое! Эта фишка обсуждалась на погибшем форуме(помоему).

Я так понимаю тебе нужно на хостинге запускать?

У 95% процентов хостеров стоит ограничение на время выполнения скрипта. Обычно 30 сек. Так, что забудь. Единственный выход - это cron.

Автор: Frikazoid 10.8.2002, 04:35
Я так понял, что скрипты надо размещать в определённых дирректориях!
Я правельно понял? Если нет, то объясните плз!!!

Автор: Frikazoid 10.8.2002, 04:44
Ладно Cron значит Cron!
Тока как его юзать я так и не понял!

Автор: Wowa 10.8.2002, 05:24
Цитата(Frikazoid @ 09.8.2002, 19:35)
Я так понял, что скрипты надо размещать в определённых дирректориях!
Я правельно понял? Если нет, то объясните плз!!!

нет, где хочешь, лишь бы они обрабатывались.

Автор: Sattu 10.8.2002, 05:25
Цитата

У 95% процентов хостеров стоит ограничение на время выполнения скрипта.

По моему у 100% :) .
Цитата

Обычно 30 сек.

Есть такая интересная функция void set_time_limit (int seconds). Думаю объяснять как она работает не надо.
Я вобще не хостюсь на бесплатных серверах (друзья помогают :) ) . Так что сказать на 100% будет она работать или нет - немогу...

Автор: Wowa 10.8.2002, 05:25
Цитата(Frikazoid @ 09.8.2002, 19:44)
Ладно Cron значит Cron!
Тока как его юзать я так и не понял!

У тебя есть доступ в unix shell? или может веб-панелька управления аккаунтом есть у хостера?

Автор: Wowa 10.8.2002, 05:27
Цитата(Sattu @ 09.8.2002, 20:25)
Я вобще не хостюсь на бесплатных серверах.

Ах да. Если у тебя бесплатный хостинг, то тебе трудно помочь.

Автор: Wowa 10.8.2002, 05:45
Цитата(Sattu @ 09.8.2002, 20:25)
Цитата

У 95% процентов хостеров стоит ограничение на время выполнения скрипта.

По моему у 100% :) .

Никогда нельзя быть уверенным в подобных вещах на 100% :)

Автор: Frikazoid 10.8.2002, 07:45
Я слышал про shell доступ, но не юзал ни разу! Из-за дорогого нета я
не часто практикую сёрф по нету!
Да я живу на хосте у Агавы! H1.ru.
Подскажите как мне это всё замутить!
А то очень хочется!

Автор: Wowa 10.8.2002, 08:47
Цитата(Frikazoid @ 09.8.2002, 22:45)
Я слышал про shell доступ, но не юзал ни разу! Из-за дорогого нета я
не часто практикую сёрф по нету!
Да я живу на хосте у Агавы! H1.ru.
Подскажите как мне это всё замутить!
А то очень хочется!

h1.ru - это бесплатный агавовский хостинг.
Т.е. скорее всего они не предоставляют ни shell, ни саму возможность редактировать cron.

Пиши их админам. Спроси, что делать. Никто другой, кто не работал с h1 тебе помочь не сможет.

Автор: Frikazoid 10.8.2002, 10:20
Это оно? Извените за столь большой кусок!



На нашем сервере в файле .htaccess разрешено использование следующих групп конфигурационных директив:

AuthConfig - включает в себя набор директив для авторизации на строне сервера;

FileInfo - включает в себя набор директив для управления типами и кодировками файлов;

Indexes - включает в себя набор директив для управления индексированием каталогов;


Пример переопределения исходной кодировки html документов.
  Предположим, что по каким-то причинам, все файлы в Вашей директории WWW представлены в кодировке koi8-r. В этом случае надо поместить в каталог WWW файл .htaccess, содержащий строчку: CharsetSourceEnc koi8-r.

Пример установки доступа по паролю
  Допустим необходимо установить доступ по паролю к каталогу "secure" находящемуся в каталоге "WWW" Вашего домашнего каталога (т.е. доступного как http://yourdomain.h1.ru/secure/ и расположенного /home/y/yourdomain.h1.ru/WWW/secure).

Для этого в этом каталоге необходимо создать файл с именем ".htaccess" с примерно следующим содержанием:

AuthName "Authentication required"
AuthType Basic
require user Ivan Michael
AuthUserFile /home/y/yourdomain.h1.ru/.htpasswd

Где:
Ivan - имя пользователя который может получить доступ к данному каталогу (их может быть несколько). Обратите внимание, что имя пользователя чувствительно к регистру!

/home/y/yourdomain.h1.ru/.passwd - имя и местоположение (полный путь) файла с паролем(ями). Для его создания следует использовать команду "htpasswd", например:

Для создания нового файла c паролем для пользователя Ivan в shell необходимо набрать:

/usr/site/apache/bin/htpasswd -c /home/y/yourdomain.h1.ru/.htpasswd Ivan

Для добавления в уже существующий файл паролей расположенный по указанному пути информации о пользователе Michael в shell необходимо набрать:

/usr/site/apache/bin/htpasswd /home/y/yourdomain.h1.ru/.htpasswd Michael

Автор: Wowa 10.8.2002, 11:21
Нет.

Автор: Frikazoid 10.8.2002, 16:57
Обидно! Видно мне не скоро светит это сделать!
Ладно! Скажи мне хоть как выполнить скрипт не выдавая результат юзверю! Т.е не формировать страничку! Да! и какртинки в 1 пиксель не катят!
Это я на тот случай, если "больше 30 с"!

ЗЫ Почему в аватарах есть огранечения по разширению?  ???
Я бы хотел туда скрипт *.php!

Автор: Frikazoid 10.8.2002, 16:59
А вот цитата из прошлых месагов!

.... в shell необходимо набрать:

Автор: Frikazoid 10.8.2002, 17:14
А это то?

  Для администрирования Ваших виртуальных серверов мы предоставляем Ваш shell доступ. Он также необходим для работы с БД MySQL и отладки CGI скриптов. Доступ к shell осуществляется с помощью SSH-клиента. Для его использования Вам необходимо скачать и установить SSH-клиент, например Putty. В архиве кроме самого ssh клиента находится утилита, аналогичная утилите scp, которая позволяет осуществлять копирование файлов. Настройка клиента сводится к указанию имени хоста, указания протокола, вводу имени пользователя и пароля. Для нашего сервера это:


Хост: hosting.agava.ru
Протокол: ssh 2
Имя пользователя: Ваше имя пользователя в системе (то же, что Вы используете для FTP доступа)
Пароль: Ваш пароль в системе (тот же, что и для FTP доступа)

Все остальные настройки можно оставить по-умолчанию.

Автор: Wowa 11.8.2002, 03:30
Цитата(Frikazoid @ 10.8.2002, 08:14)
А это то?

  Для администрирования Ваших виртуальных серверов мы предоставляем Ваш shell доступ. Он также необходим для работы с БД MySQL и отладки CGI скриптов. Доступ к shell осуществляется с помощью SSH-клиента. Для его использования Вам необходимо скачать и установить SSH-клиент, например Putty. В архиве кроме самого ssh клиента находится утилита, аналогичная утилите scp, которая позволяет осуществлять копирование файлов. Настройка клиента сводится к указанию имени хоста, указания протокола, вводу имени пользователя и пароля. Для нашего сервера это:


Хост: hosting.agava.ru
Протокол: ssh 2
Имя пользователя: Ваше имя пользователя в системе (то же, что Вы используете для FTP доступа)
Пароль: Ваш пароль в системе (тот же, что и для FTP доступа)

Все остальные настройки можно оставить по-умолчанию.

да

Автор: Frikazoid 11.8.2002, 06:42
Наверное я уже задрал тут всех своими вопросами! Но не мог бы ты мне объяснить процесс...
Ну я имею ввиду по cron!

Автор: Frikazoid 12.8.2002, 04:22
Ну есть там shell доступ! Ну и всё там поддерживается!
Кто ни будь обяснит мне как сделать эту фишку с cron?

Автор: Wowa 12.8.2002, 10:44
зайди и дай команду:
crontab -e

Если тебе выдаст что-то нормальное на экран, то будет говорить дальше. Иначе - просто прав нет.

Автор: Frikazoid 2.10.2002, 01:34
Кто подскажет как из командной строки всё это сделать(работа с крон)?

Автор: vintyara 4.7.2007, 11:28
команда crontab -e

Автор: Leoo 4.7.2007, 19:40
Цитата

команда crontab -e

это только для редектирования срона, а для его справки надо набрать man crontab

Автор: hollywood 20.10.2007, 08:23
Здравствуйте! мне нужно, чтобы определенные php-скрипты запускались в определенный момент (или по тайм-ауту, что даже лучше). При этом нет необходимости в их периодическом выполнении: т.е. схема примерно такая: в момент x должен однократно сработать скрипт x1, в момент y - скрипт y2 и т.д. При этом значения x и y определяются другим PHP скриптом. Важный момент: расписание будет часто меняться. Выглядит это примерно таким образом: отработал скрипт-планировщик, поставил в очередь ряд заданий. После этого скрипт-планировщик может быть запущен снова (причем не обязательно после выполнения уже запланированных заданий).

Уточнение: консольного доступа к серверу, на котором расположен скрипт не имеется.

Мне нужно знать, какими методами и средствами решается такая задача (сам я этого не представляю даже приблизительно), чтобы хотябы знать, ЧТО мне искать. Так же буду очень признателен, если подскажете, где конкретно можно найти информацию по этому вопросу. Буду благодарен за приведенные примеры.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)