所有由zhufenghua发布的文章

mysql批量更新计划任务下次执行时间

已知计划任务存储为一个表,已知间隔分钟interval字段,已知时间存储为时间戳格式

使用一个sql批量更新下次执行时间

update `#@__site_plugins_18_read` set `state`=0,`nextTime`=(unix_timestamp(current_timestamp)+`interval`*60) where id in(6,10,13)

使用 current_timestamp 取得当前时间,再使用 unix_timestamp取得时间戳,再增加interval分钟的时间长度,多个记录使用in

php中“反引号的作用

1.反引号常见在SQL语句中来包含关键字,比如

$sql = “select user,username from Content“;

加上反引号就不会有因为字段是关键字而出错的问题。
  
为了保险起见,我们建议在所有字段中都加上反引号,即上面的SQL建议写成

$sql = “select user,username from Content“;

2.反引号还有种功能是执行系统命令,比如:

echo ipconfig

注意,此句中的引号是反引号,而不是单引号。此句在足够权限的系统环境中,将ip地址信息显示出来

php file_put_contents锁定

php 的 file_put_contents是比较慢的io操作,高并发下可能产生数据覆盖。

file_put_contents($file, $content, FILE_APPEND|LOCK_EX)

当第三个参数,flag指定为 LOCK_EX 时表示独占,如果使用 FILE_APPEND则可以追加(默认是覆盖)。

不过无法难以保证读取锁定,仍需要数据库,php文件系统并不可靠,无法满足高并发下的同步需求。

还有另一种办法,当单用户并发高时,把文件中的值,存入session,利用session的安全机制,实现数据的同步。

多用户时,使用$_GLOBAL变量或者$_FILES变量,或者static变量等缓存数据,以实现数据的同步。

理论与实践的关联

实践错误的,理论上也能看到错误。

理论上成功的,实践未必成功。

实践可以推导出理论,反过来却不一定行。

理论更多的意义在于启发和吸取经验,实践才能真正绝对一件事的成败。