Создавайте JS-файл с использованием PHP каждые 24 часа.

Я пытаюсь настроить задание cron, которое каждые 24 часа запускает php-скрипт, который воссоздает файл javascript на сервере. Я безуспешно пробовал следующие команды для cronjobs.

Обратите внимание, если я открываю/запускаю этот файл из браузера, он полностью работает!

оба файла имеют права доступа 777, используя CentOS версии 5.8 и PHP 5.4.22 (cli)

ФАЙЛ PHP И JS НАХОДЯТСЯ В ОДНОЙ ПАПКЕ */home/pmos/public_html/cash/js/createjs.php /home/pmos/public_html/cash/js/custom.js*

Спасибо

Команды, которые я пробовал

/usr/bin/php -f /home/pmos/public_html/cash/js/createjs.php
/usr/bin/wget --output-document=/dev/null https://www.website.com/cash/js/createjs.php
curl https://www.website.com/cash/js/createjs.php

PHP-скрипт

<?php
$date = date("Y-m-d");
$date1 = str_replace('-', '/', $date);
$nextd = date('Y-m-d',strtotime($date1 . "+2 days"));
$date = DateTime::createFromFormat("Y-m-d", $nextd);
$year = $date->format("Y");
$month = ($date->format("m") -1);
$day = $date->format("d"); 

$myFile = "custom.js";
$fh = fopen($myFile, 'w') or die("can't open file");
$stringData = "jQuery(document).ready(function ($){ jQuery('a.scrollTo').click(function(){ jQuery.scrollTo( $(this).attr(\"href\"), { duration: 1000, easing:'easeInOutExpo', offset: -100 }); return false; }); if(jQuery.fn.countdown){ jQuery('span#countdown').countdown({ until: new Date(".
$year.", ".$month.", ".$day.
"), format: 'HMS' }); } });";
fwrite($fh, $stringData);
fclose($fh);
?>

person Daniel Adarve    schedule 29.03.2014    source источник
comment
Действительно ли работают команды, которые я пробовал? а что вы пытались вставить в свой файл crontab? Если вы можете запустить что-то из командной строки, проблема связана с вашим вызовом cron. Вы хотите, чтобы ваш веб-сервер работал? или же ... ?   -  person DrLivingston    schedule 29.03.2014
comment
Что происходит, когда вы пробуете эти вещи?   -  person Malvolio    schedule 29.03.2014
comment
если я запускаю файл непосредственно из браузера, создается JS, однако, когда я настраиваю задание cron, ничего не происходит, я также пытался запустить его из командной строки, и ничего не происходит   -  person Daniel Adarve    schedule 29.03.2014
comment
Вопрос не по теме: ваш веб-сервер статичен? Почему бы просто не использовать файл js как PHP? (когда вы запрашиваете его, поместите в него некоторые параметры URL, чтобы браузер не кэшировал его). ИЛИ просто поместите эту логику даты в сам javascript, чтобы вам не нужно было ничего этого делать?   -  person DrLivingston    schedule 29.03.2014
comment
не могу использовать логику внутри самого javascript, потому что таймер будет работать только тогда, когда кто-то просматривает страницу, поэтому этот таймер будет сбрасываться каждый раз, когда кто-то загружает страницу   -  person Daniel Adarve    schedule 29.03.2014


Ответы (1)


Я предполагаю, что ваш рабочий каталог не то, что вы думаете.

$myFile = "custom.js";

может быть где угодно.

https://unix.stackexchange.com/questions/38951/what-is-the-working-directory-when-cron-executes-a-job

(но это только предположение, так как вы на самом деле не дали нам достаточно информации, чтобы знать)

person DrLivingston    schedule 29.03.2014
comment
файл JS находится в том же каталоге, что и файл php - person Daniel Adarve; 29.03.2014
comment
Это не означает, что это будет ваш current working directory при выполнении задания cron. Я предполагаю, что у вас есть случайный файл custom.js, который записывается где-то, например, в вашем домашнем каталоге. - person DrLivingston; 29.03.2014
comment
Я бы предложил изменить значение $myFile, чтобы иметь полную информацию о пути. - person DrLivingston; 29.03.2014
comment
так что это будет что-то вроде $myFile = /home/pmos/public_html/cash/js/custom.js; - person Daniel Adarve; 29.03.2014
comment
да, если это то место, откуда вы его подаете. chron не узнает, что нужно перейти в /home/pmos/public_html/cash/js/ до того, как он создаст ваш файл. Таким образом, вам нужно либо указать, где именно вы хотите файл, либо изменить каталоги, прежде чем выполнять задание хрона. - person DrLivingston; 29.03.2014
comment
Рад, что у тебя получилось. (Хотя теперь прочитайте комментарии выше о том, действительно ли вам нужно пройти через все эти проблемы в первую очередь.) - person DrLivingston; 29.03.2014