我的基本目标是使用Yii2 Web应用程序在PHP中实现异步触发器
我需要运行php批处理作业,但我不想在浏览器/ cron中等待完成这项工作.为了运行作业,我需要使用我的应用程序的不同文件
http://myapp/foojob.php
Run Code Online (Sandbox Code Playgroud)
foojob.php应该异步调用许多php实例[每个实例承载一个作业]基于手头的可用工作.调用的时间限制(foojob.php)小于60sec.i需要在超过超时值之前触发新的php实例.
该应用程序是自托管产品.它将得到各种托管服务的工作.共享主机不允许/为其客户提供任何外部扩展.
我的表结构
表:标记

我的目标: 我想插入或更新条件的多个记录
我目前正在查询此查询
第一步
SELECT * FROM `marks` WHERE `student` =115 AND `param` =1
Run Code Online (Sandbox Code Playgroud)
第二步
if
records found by matching above criteria i just update record by my new values
else
insert new record into my table
Run Code Online (Sandbox Code Playgroud)
它会正常工作.但我想减少代码并将其优化为单个查询.它可能与否?我在MySQL docs上发现了这个INSERT ... ON DUPLICATE KEY UPDATE.如果这是一个解决方案.我怎么能通过查询实现?
注意:我正在使用Yii框架 .来自Yii的建议也欢迎
已编辑: 此查询不会更新行.但逃避插入工作正常
INSERT INTO marks(`student`,`param,mark`,`created`,`lastmodified`,`status`)
VALUES
(11,30,10,'00-00-00 00:00:00','00-00-00 00:00:00','U')
ON DUPLICATE KEY UPDATE `mark`=VALUES(`mark`)
Run Code Online (Sandbox Code Playgroud)