当前位置:首页 » 编程语言 » php锁机制

php锁机制

发布时间: 2022-08-06 21:11:23

php队列执行任务的时候,如何防止进程之间抢夺资源

实际上有一个非常简单的办法,你可以利用数据库操作的原子性来实现,不需要那么复杂的锁机制,甚至队列。就按你的方法来,假设任务数据表 task 里有两个字段 id, status,我们定义status三个状态
0: 待处理1: 正在处理2: 处理完成

假设你有一堆 PHP 进程都用如下 sql 语句去取出数据库里的待处理任务
SELECT * FROM task WHERE status = 0

取出来以后,我们为了防止其他用户不再重复取出要把它的状态标记为 1
UPDATE task SET status = 1 WHERE id = xxx

但是等等,这样就会产生如你所说的资源抢夺,但如果加上一个简单的技巧就可以避免,你把语句变成这样
UPDATE task SET status = 1 WHERE id = xxx AND status = 0

熟悉一点数据库的人可能会说这样还是避免不了抢夺,只是避免了重复写入。
我要说的是,能避免重复写入就够了,我们的进程在执行完这条操作后,去获取 affected_rows ,即更新的条数,根据数据库的原子性,只有第一个抢占的进程才会返回 1,它可以进行后面的操作。而剩下返回 0 的进程,直接进入下一个等待流程即可。

⑵ php mysql的锁机制 怎么写

MYSQL中的锁:
语法 :
LOCK TABLE 表名1 READ|WRITE, 表名2 READ|WRITE .................. 【锁表】
UNLOCK TABLES 【释放表】

Read:读锁|共享锁 : 所有的客户端只能读这个表不能写这个表
Write:写锁|排它锁: 所有当前锁定客户端可以操作这个表,其他客户端只能阻塞
注意:在锁表的过程中只能操作被锁定的表,如果要操作其他表,必须把所有要操作的表都锁定起来!

PHP中的文件锁 (锁的是文件,不是表)
文件锁的文件与表有什么关系?:一点关系也没有,与令牌相似,谁拿到谁操作。所以表根本没锁。
测试时,有个文件就行,叫什么名无所谓

⑶ PHP下有没有互斥锁的实现方案 - PHP进阶讨论

回复 1# 用memcache每秒10K+的速度应该够了php本身能跑多快?国内某top2公司的手机游戏接入平台每秒才要求20k读,15k写要不行你就换TC性能还是不够你就写个小扩展呗

⑷ php加载ts文件

php以ISAPI方式加载的时候选择ts文件。
不会出现数据不一致或者数据污染php以ISAPI方式加载的时候选择这个版本。
多线程访问时,采用了加锁机制,当一个线程访问该类的某个数据时,进行保护,其他线程不能进行访问直到该线程读取完,其他线程才可使用。

⑸ PHP下有没有互斥锁的实现方案

木有...至于锁的方案一般由资源自己实现。比如对数据库和缓存的访问。PHP进程都是单线程模型,如果资源不可读写,则阻塞。不过PHP有文件锁的机制,这貌似是PHP唯一支持的锁...

⑹ PHP程序里如何释放内存

这个,不是PHP本身的问题。
而是你的服务器网络带宽的问题。
你用curl请求的是远程的服务器,要占用带宽吧?用户访问你的网站,也要占用带宽吧?于是,你的带宽就悲剧了。
----------------------------------
一个PHP程序执行完,所有的东西就消失了,内存就自动释放了...所以这方面你不需要考虑的。

⑺ thinkphp事务上锁后整个数据库都上锁吗

事务的锁机制应该与thinkphp无关,主要看你采用什么数据库。

⑻ PHP中文件存储是fopen好还是数据库好

如果是用户上传的文件,建议保存在文件系统,位置保存在数据库.如果你要用fopen读写文件,为了保持数据的一致性,所有PHP脚本写该文件时都要用flock加排它锁.如果数据存在数据库的话,则不需要PHP实现锁机制.

⑼ 并发时,php操作mysql需要加锁吗mysql在并发时读写数据表会加锁,我觉得不用再手动加锁,请问是这样吗

你得先了解mysql的表锁机制 以及具体服务器是apache活着nginx 或者别的什么,这都是有区别的

热点内容
如何远程服务器软件 发布:2024-05-01 04:37:05 浏览:394
保定编程家教 发布:2024-05-01 04:00:28 浏览:377
qq客户端源码 发布:2024-05-01 03:37:01 浏览:844
山西时间同步服务器云空间 发布:2024-05-01 03:27:20 浏览:549
iis运行php 发布:2024-05-01 03:12:22 浏览:179
linux字体下载 发布:2024-05-01 02:53:31 浏览:738
怎么查自己电脑配置跟型号 发布:2024-05-01 02:44:19 浏览:109
vps服务器adsl动态ip 发布:2024-05-01 02:15:49 浏览:779
python成员函数 发布:2024-05-01 01:26:03 浏览:377
编程猫小爱 发布:2024-05-01 01:25:18 浏览:32