0

我有一个手机价格网站,所有价格都是从外部网站手动收集的,我想要的只是$emag, $koyos每 3 天安排一次更新价格( )。

我的手动更新查询是这样的:

$editare = "UPDATE modele SET koyos='$koyos', emag='$emag' WHERE id ='{$id}' ";

if ($dbh->query($editare))
 {
   print "<div><h2><img src=\"http://mysite.com/images/ok.png\"/><br /><br /Succes!</h2><br />
  Vei fi redirectionat in cateva momente inspre adaugarea unui nou model de tableta sau telefon!
<meta http-equiv=\"refresh\" content=\"2; URL=index.php\"/>";
}
 else mysql_error(); 

如何在 3 天内自动执行此查询?

!我的虚拟主机不支持cronjob SSH, cPanel or Plesk

4

1 回答 1

4

首先,您需要用 PHP 编写一个脚本来执行您想做的事情(基本上,它只是您想要在预定时间运行的 PHP 代码,不需要添加)。

然后,使用cron 作业,您可以根据需要安排其运行频率。

*/4 * * * * wget --spider file.php在 crontab 中每 4 分钟运行一次。您可能想阅读一些crontab 教程

这是来自以下链接之一的图片,描述了如何安排您想要的时间:

在此处输入图像描述


Cronjobs 基本上是每隔一段时间运行一次的时间表。它们真的很有用,我一直在 Linux 上使用它们。

上面的链接对于解释每 x 分钟执行一次脚本需要输入哪些数字非常有用,但是您可能需要谷歌“Cronjob 计算器”来自动为您计算正确的数字(我有时自己这样做)。

在安装了 crontab 的 linux 中,键入crontab -l以查看所有 cronjobs 的列表。键入crontab -e以编辑当前用户的 cronjob 列表。这是你粘贴我上面给你的代码的地方。

编辑:要了解基本的 cronjobs,首先安装 crontab。然后,使用上面的代码执行写入文件的脚本。然后,只需tail -f那个文件,并观察它是如何(在 cronjob 启动后四分钟内)在你眼前更新的。

从基础开始。然后让它执行你的 MySQL 脚本。

有用的链接:

http://www.linuxweblog.com/crotab-tutorial
http://clickmojo.com/code/cron-tutorial.html(这看起来不错)
http://www.tutorial5.com/content/view/95/51 /
http://www.thegeekstuff.com/2011/07/cron-every-5-minutes/(分钟/天解释)

注意:你不能少于一分钟。最后一个链接建议了一个sleep()命令来解决这个问题,所以检查一下。


OP 的问题在于,由于他使用非常受限的共享主机,他无法访问 SSH、cPanel、cronjobs 或其他类似的东西。

这里的一个选项是分离一个单独的过程来使用exec(), 或shell_exec(), 最后带有 nohup和符号 (&) 来获取 PHP 文件,以及sleep()OP 想要的天数的很长一段时间。这将导致 PHP 脚本在服务器的后台运行。

上述示例需要采取安全措施,即:如果服务器重新启动,则脚本将不再运行,必须重新启动。相反,如果用户在错误的时间意外点击了脚本(或其他人这样做),则会产生多个进程,因此可能会发生检查进程是否已经运行的安全措施(或者基本的密码输入要求可能会有所帮助以免意外击中)。

于 2013-03-21T09:41:44.060 回答