[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Не работает Cron на хостинге
Страницы: 1, 2
philya
Решил протестировать крон на хостинге простым файлом, вот код:

<?php

$f = fopen("test.txt", "a");
fputs($f, date("Y-m-d H:m:s" . "\n"));
fclose($f);


?>


в личной панели поставил время выполнения на каждый час. Прошло несколько дней, скрипт ни разу не выполнился, начал писать в поддержку. После долгой переписки, мне прислали логи, где видно, что скрипт как и должен запускается каждый час, но файл на серваке как был пустым, так и остался. Запуск "руками" этого скрипта срабатывает как надо и в файл пишется текущее время. Права выставил 0755.

Небольшое замечание, заметил, что количество минут на сервере всегда равно 3, т.е. в какое бы время я не запустил этот скрипт, всегда в файл пишется дата с 3 минутами(пример 2014-03-12 12:03:15).
rooor
Цитата
всегда в файл пишется дата с 3 минутами

потому что пишется не минута, а месяц) минута - это "i"
date("Y-m-d H:i:s")

права на запись в файл есть?
<?php

file_put_contents('./test.txt', date("Y-m-d H:i:s") . "\r\n", FILE_APPEND);


?>
philya
Цитата
потому что пишется не минута, а месяц) минута - это "i"
черт ....

Поменял код на ваш, права какие были не знаю, но если я запускал скрипт, то в файл запись производилась. Поменял на всякий случай на 0755.

И нифига не работает.
forza
Вы создали(закачали) этот файл под своим именем. Соответственно:
"755 (-rwxr-xr-x) Каждый пользователь имеет право читать и запускать на выполнение; владелец может редактировать"
Крон запускается не от вашего имени, поэтому он может читать, но писать - нет. Ставим права 777.

_____________
Заработок для веб-разработчиков: CodeCanyon
Мое Портфолио
killer8080
Цитата (philya @ 13.03.2014 - 07:58)
но файл на серваке как был пустым, так и остался. Запуск "руками" этого скрипта срабатывает как надо и в файл пишется текущее время. Права выставил 0755.

либо используй абсолютные пути, либо вручную устанавливай текущую директорию. При запуске кроном текущей может быть не директория где лежит скрипт. а та откуда запущен интерпретатор, например /usr/bin. А туда файлы писать вам никто не позволит user posted image
<?php
chdir(__DIR__); // PHP>=5.3 для старых версий вместо __DIR__ - dirname(__FILE__)

$f = fopen("test.txt", "a");
fputs($f, date("Y-m-d H:i:s" . "\n"));
fclose($f);


?>
philya
В общем поменял права на файл test.txt на 777, изменил скрипт на

$dir = getcwd();
file_put_contents($dir . '/test.txt', date("Y-m-d H:i:s") . "\n", FILE_APPEND);


файл пуст
killer8080
philya
в общем мой вариант проигнорил rolleyes.gif
philya
Нет, откуда же я знаю, какой там будет путь, поэтому подумал, что функция getcwd() и вернет тот каталог, где лежит запускаемый скрипт. Чтобы не мучиться с путями перепишу на добавление строки в базу данных.
killer8080
Цитата (philya @ 13.03.2014 - 11:21)
поэтому подумал, что функция getcwd() и вернет тот каталог, где лежит запускаемый скрипт

getcwd возвращает текущую директорию, решение я уже показал
philya
Ни ваше решение, ни мой код изменения строки в базе не сработали
killer8080
philya
покажи команду запуска, что прописал в крон
philya
Команда -
wget -O http://mysite.com/cron.php
.
Cron.php - сам файл, который пишет дату в test.txt. Вообще в панели управления сайтом, разделе cron-задачи, можно просто указать файл для выполнения кроном, но это не работало, и в ходе переписки с админами, они сами настояли на этой команде.
killer8080
Цитата (philya @ 14.03.2014 - 08:04)
Команда -
wget -O http://mysite.com/cron.php

ошибка, почитай назначение опций wget. -O указывает файл куда сохранять контент, для подавления дефолтного сохранения вместо файла указывают дефис.
wget -q -O - http://mysite.com/cron.php>/dev/null

но вообще это костыль
Цитата (philya @ 14.03.2014 - 08:04)
можно просто указать файл для выполнения кроном, но это не работало, и в ходе переписки с админами, они сами настояли на этой команде.

за такие советы расстреливать надо user posted image А если скрипт должен работать в течении продолжительного времени? Потом будешь искать почему скрипт не выполняется до конца? Не говоря уже о бессмысленной нагрузке на вебсервер.

Цитата (philya @ 14.03.2014 - 08:04)
Вообще в панели управления сайтом, разделе cron-задачи, можно просто указать файл для выполнения кроном,

возможно нужно было прописать шибэнг в начале скрипта, а то мало ли что он там в крон задание пихнёт, может тупо /path/to/sript.php
#!/usr/bin/env php
<?php
...
philya
Цитата
ошибка, почитай назначение опций wget. -O указывает файл куда сохранять контент, для подавления дефолтного сохранения вместо файла указывают дефис.


не очень понял здесь, получается, что я просто копировал этот скрипт сам в себя?
killer8080
Цитата (philya @ 14.03.2014 - 10:49)
не очень понял здесь, получается, что я просто копировал этот скрипт сам в себя?

нет, ты запускал консольную качалку, которая выполняла http запрос,
Открой ман на wget и посмотри назначение опций. Вот как выглядит то что ты делал
andrey@debian:~$ wget -O http://ya.ru
wget: отсутствует URL
Использование: wget [ОПЦИЯ]... [URL]...

Попробуйте `wget --help' для получения списка опций.

Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.