**已关闭。**此问题为not reproducible or was caused by typos。目前不接受答案。
这个问题是由一个打字错误或一个无法再重现的问题引起的。虽然类似的问题在这里可能是on-topic,但这个问题的解决方式不太可能帮助未来的读者。
4天前关闭。
Improve this question
我正在尝试创建一个演示网站供用户测试。我想每隔x小时恢复一次数据库。当我在浏览器中运行php脚本时,它工作了。它删除了表并恢复了数据库,没有任何问题。当我在cron中添加相同的文件时,表被删除了,但它没有恢复数据库。我不知道为什么它没有恢复数据库。
<?php
$mysqli = new mysqli("localhost", "", "", "");
$mysqli->query('SET foreign_key_checks = 0');
if ($result = $mysqli->query("SHOW TABLES"))
{
while($row = $result->fetch_array(MYSQLI_NUM))
{
$mysqli->query('DROP TABLE IF EXISTS '.$row[0]);
}
}
$mysqli->query('SET foreign_key_checks = 1');
echo "Deleted databse";
sleep(5);
$sqlScript = file('demo.sql');
foreach ($sqlScript as $line) {
$startWith = substr(trim($line), 0 ,2);
$endWith = substr(trim($line), -1 ,1);
if (empty($line) || $startWith == '--' || $startWith == '/*' || $startWith == '//') {
continue;
}
$query = $query . $line;
if ($endWith == ';') {
mysqli_query($mysqli,$query) or die('<div class="error-response sql-import-response">Problem in executing the SQL query <b>' . $query. '</b></div>');
$query= '';
}
}
$mysqli->close();
echo '<div class="success-response sql-import-response">SQL file imported successfully</div>';
?>
Cron作业
*/10 * * * * /usr/local/bin/php /home/demo/public_html/db.php
2条答案
按热度按时间e37o9pze1#
如上所述,在您的脚本中有一个相对路径,因此您需要从脚本所在的目录运行它。您可以简单地将cron命令替换为:
&&表示在应用第一个命令后,应用下面的命令。
icnyk63a2#
aynber在注解中提供了答案
Cron作业要么相对于运行它的用户的home运行,要么相对于服务器根(如果它使用
/etc/cron
)运行。file('demo.sql');
查找脚本运行位置的相对文件路径,因此当由cron运行时,它将失败我更新了sql文件路径,它工作了。