2016-09-01 4 views
1

Так что в основном у меня есть этот скрипт cronjob, который работал на godaddy php 5.4, но в другом хосте он не работает, также пробовал разные версии php. У меня есть правильный путь к cron, поддержка хоста, которую я сказал, даже представила мне журналы. Может быть, есть некоторые проблемы с этим скриптом? Он в основном добавляет точки энергии в учетную запись пользователя.Cron job script не работает

<?php 
include "../core.php"; 
//Fuel Refill (by default every 10 minutes) 

$sqlusers = mysql_query("SELECT * FROM users WHERE banned='No'"); 
while ($rowuser = mysql_fetch_assoc($sqlusers)) { 
    if ($rowuser['fuel'] < $rowuser['fuelcapacity']) { 
     $userfuelrefill = mysql_query("UPDATE users SET fuel=fuel+1 WHERE username='$rowuser[username]'"); 
    } 
} 

echo '<meta http-equiv="refresh" content="0;url=../garage">'; 
?> 
+1

Почему у cron-скрипта есть html? вы можете запустить его из командной строки? Что вы звоните в cron? которые включают в себя мое предположение - попробуйте абсолютный путь. зачем вообще зацикливаться, если вы не запускаете: 'UPDATE users SET fuel = fuel + 1 WHERE banned = 'No' и fuel nogad

+0

показать нам линию crontab. Как сказал @nogad, почему html? – olibiaz

+0

Мой путь: '/ usr/local/bin/php/home/USERNAME/public_html/cron/fuelrefill.php' Я не программист, кто-то я купил этот скрипт из этого, это, не знаю, почему он будет работать на один хост, а не другой ... – Leafblower9000

ответ

0

расширение MySQL осуждается так попробуй этот PDO подход:

<?php 
require [full/script/path/]core.php; 
$PDO = new PDO([INSERT CONNECTION STRING]); 
$result = $PDO->query("SELECT * FROM users WHERE banned='No'")->fetchAll(PDO::FETCH_ASSOC); 
foreach ($result as $row) 
{ 
    if ($row['fuel'] < $row['fuelcapacity']) { 
    $query = "UPDATE users SET fuel=fuel+1 WHERE username= :username"; 
    $query = $PDO->prepare($query); 
    if ($query->execute(array(':username' => $row[username]))) { 
    } else { throw new Exception('SQL Query Failed [' . $query->errorCode . ']'); } 
    } 
} 
echo '<meta http-equiv="refresh" content="0;url=../garage">'; 

Теперь, конечно, есть некоторые вещи, которые вы должны будете заменить как строку соединения и полный путь, но это должно работать с PHP PDO включен.

+0

Почему бы не исправить и другие проблемы? и если он не изменит core.php, чтобы добавить PDO-соединение, это не удастся – nogad

+0

Если «core.php» не запустит соединение, он тоже не будет. Также они сказали, что они не программист, поэтому это самое минимально инвазивное решение, которое я мог бы подумать, чтобы предотвратить дальнейшую необходимую модификацию. Я имею в виду, что мы могли бы сделать это приложение Laravel и направить его в планировщик, но встроить фреймворк в комментарии переполнения стека - это слишком много времени для LOL ... Надеюсь, вы подхватили мой сарказм и шутки @nogad – lemoney

+0

Зачем поощрять кого-то запускать n запросов, когда они могут просто запустить один? И не нужно использовать полный путь для include. Относительно просто отлично. – Blake