CakePHP MYSQL读取最近更新的行

时间:2014-10-15 10:45:43

标签: php mysql cakephp cron

伙计我正在使用CakePHP,并且遇到了与我在数据库中设置的最新更新标志相关的问题。

这是代码

$this->loadModel('Setting');
$s=$this->Setting->find('first');
if($s['Setting']['inprogress']==1)
 {
        echo "still working...";
        exit;
 }

$s['Setting']['inprogress']=1;
$this->Setting->Save($s);

//// Some code that is using db table and process data for like 30-40 seconds

$s['Setting']['inprogress']=0;
$this->Setting->Save($s);
exit;

此代码由cron作业运行,检查是为了确保下一个cron作业在第一个完成之前不会触摸数据。但显然cron工作并行运行,因为他们根本没有获得进展= 1。

但是,如果我使用PHPMyAdmin手动检查记录,inprogress标志立即变为1,但不知何故它不能用于下一个http调用。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

为什么不使用 saveField

所以,而不是

$s['Setting']['inprogress']=1;
$this->Setting->Save($s);

你可以

$this->Setting->saveField('inprogress', 1);

或更好,确保,如果在您保存的设置模型上完成其他查找,则可以执行

$id = $s['Setting']['id'];
$this->Setting->id = $id;
$this->Setting->saveField('inprogress', 1);