A. php下如何对文件进行加锁
/**********************************************
*filelock
*@authorZeal
Li
*http://www.zeali.net/
***********************************************/
/*
*lock_thisfile:获得独享锁
*@param$tmpFileStr用来作为共享锁文件的文件名(可以随便起一个名字)
*@param$locktype锁类型,缺省为false(非阻塞型,也就是一旦加锁失败则直接返回false),设置为true则会一直等待加锁成功才返回
*@return如果加锁成功,则返回锁实例(当使用unlock_thisfile方法的时候需要这个参数),加锁失败则返回false.
*/
function
lock_thisfile($tmpFileStr,$locktype=false){
if($locktype==
false)
$locktype=LOCK_EX|LOCK_NB;
$can_write=0;
$lockfp=@fopen($tmpFileStr.".lock","w");
if($lockfp){
$can_write=@flock($lockfp,$locktype);
}
if($can_write){
return$lockfp;
}
else{
if($lockfp){
@fclose($lockfp);
@unlink($tmpFileStr.".lock");
}
returnfalse;
}
}
/**
*unlock_thisfile:对先前取得的锁实例进行解锁
*@param$fplock_thisfile方法的返回值
*@param$tmpFileStr
用来作为共享锁文件的文件名(可以随便起一个名字)
*/
function
unlock_thisfile($fp,$tmpFileStr){
@flock($fp,LOCK_UN);
@fclose($fp);
@fclose($fp);
@unlink($tmpFileStr.".lock");
}
?>
<?php
//使用举例
$tmpFileStr="/tmp/mylock.loc";
//等待取得操作权限,如果要立即返回则把第二个参数设为false.
$lockhandle=
lock_thisfile($tmpFileStr,true);
if($lockhandle){
//
在这里进行所有需要独占的事务处理。
//......
//事务处理完毕。
unlock_thisfile($lockhandle,$tmpFileStr);
}
?>
B. thinkphp事务上锁后整个数据库都上锁吗
事务的锁机制应该与thinkphp无关,主要看你采用什么数据库。
C. 请问php中有没类似ASP的Application.Lock
Application的全局类操作...php要模拟的
你用Application很容易统计出在线人数..根绝系统设置的连接延时..自动释放离线是自动的..
而php你就需要去用个存储媒介去模拟
做Lock也一样...你要通过一条记录(文本或数据库)表示现在上锁的状态
D. php是什么意思
PHP(外文名:PHP: Hypertext Preprocessor,中文名:“超文本预处理器”)是一种通用开源脚本语言。语法吸收了C语言、Java和Perl的特点,利于学习,使用广泛,主要适用于Web开发领域。PHP 独特的语法混合了C、Java、Perl以及PHP自创的语法。
它可以比CGI或者Perl更快速地执行动态网页。用PHP做出的动态页面与其他的编程语言相比,PHP是将程序嵌入到HTML(标准通用标记语言下的一个应用)文档中去执行,执行效率比完全生成HTML标记的CGI要高许多。
PHP还可以执行编译后代码,编译可以达到加密和优化代码运行,使代码运行更快。
开发工具:
集成开发环境是一种集成了软件开发过程中所需主要工具的集成开发环境,其功能包括但不仅限于代码高亮、代码补全、调试、构建、版本控制等。一些常见的PHP IDEs如下:
1、Zend Studio:商业版,Zend官方出品,基于eclipse
2、Eclipsewith PDT:免费
3、Coda:商业版,针对Mac用户
4、NetBeans:免费,功能强大
5、PHP Storm:商业版
6、AptanaStudio:免费
7、PhpEd:商业版
8、KomodoIDE/Edit:IDE为商业版,Edit可免费使用
9、Adobe Dreamweaver:商业版
除去集成开发环境,具备代码高亮功能的常见文本编辑器因其轻巧灵活也常被选作开发工具,例如:Notepad++、Editplus、SublimeText、Everedit(国人开发)等等。
PHP的特性包括:
1、PHP 独特的语法混合了 C、Java、Perl 以及 PHP 自创新的语法。
2、PHP可以比CGI或者Perl更快速的执行动态网页——动态页面方面,与其他的编程语言相比,
PHP是将程序嵌入到HTML文档中去执行,执行效率比完全生成htmL标记的CGI要高许多;
PHP具有非常强大的功能,所有的CGI的功能PHP都能实现。
3、PHP支持几乎所有流行的数据库以及操作系统。
4、最重要的是PHP可以用C、C++进行程序的扩展。
PHP优势:
1、开放源代码
所有的PHP源代码事实上都可以得到。
2、免费性
和其它技术相比,PHP本身免费且是开源代码。
3、快捷性
程序开发快,运行快,技术本身学习快。嵌入于HTML:因为PHP可以被嵌入于HTML语言,它相对于其他语言。编辑简单,实用性强,更适合初学者。
4、跨平台性强
由于PHP是运行在服务器端的脚本,可以运行在UNIX、LINUX、WINDOWS、Mac OS、Android等平台
5、效率高
PHP消耗相当少的系统资源。
6、图像处理
用PHP动态创建图像,PHP图像处理默认使用GD2。且也可以配置为使用image magick进行图像处理。
7、面向对象
在php4,php5 中,面向对象方面都有了很大的改进,php完全可以用来开发大型商业程序。
8、专业专注
PHP支持脚本语言为主,同为类C语言。
技术应用:
1、伪静态
2、静态页面生成
3、数据库缓存
4、过程缓存
5、div+cssw3c标准
6、大负荷
7、分布式
8、flex
9、桌面程序应用(不擅长)
10、支持MVC模型
11、Smarty模版引擎
网络-PHP (超文本预处理器)
E. php文件加密是干什么的
加密自然是为了不让别人修改,或者通过授权的方式去贩卖等等。
php加密混淆的算法,比如以下几种:
PHP神盾
PHPJM
威盾
ByteRun online encoder
Php Guard
Phppro
易盾PHP源码加密
Zend Guard加密
通过别人写好的工具或者网站加密。
F. php中mysql加锁问题
有表锁,行锁,页锁
页级:引擎 BDB。
表级:引擎 MyISAM , 理解为锁住整个表,可以同时读,写不行
行级:引擎 INNODB , 单独的一行记录加锁
1) 表级锁:开销小,加锁快;不会出现死锁;锁定粒度大,发生锁冲突的概率最高,并发度最低。
2) 行级锁:开销大,加锁慢;会出现死锁;锁定粒度最小,发生锁冲突的概率最低,并发度也最高。
3) 页面锁:开销和加锁时间界于表锁和行锁之间;会出现死锁;锁定粒度界于表锁和行锁之间,并发度一般。
一般不在PHP中使用锁操作,因为如果锁了库,如果遇到错误没有及时的解锁,就会导致不能访问数据的情况。
可以使用MYSQL的事务,就是定义事务开始,然后有几个语句要执行,然后根据情况,如果有一个语句没有执行成功,可以回滚(取消这几个语句的执行),从而达到几个语句都执行成功或者都不执行的效果,在强事务型的应用中一般使用这个方式
你可以去后盾人平台看看,里面的东西不错
G. php秒杀程序数据库怎么上锁解锁
在项目中,一般都用到日志,如数据库查询日志、访问日志、对外接口请求返回参数日志,在处理日志时简单的写法如下
[php] view plain print?
$file = 'log.txt';
$fp = fopen($file, 'a+');
if(!is_writable($file)){
die("The $file is not writable!");
}
fwrite($fp, 'here');
fclose($fp);
H. php 多进程 有没有必要加锁
php多进程只有pcntl扩展了,
枷锁问题,你是操作文件么,
如果多个进程同时操作一个文件的话,必须锁定,这涉及的到文件数据异常的问题,
如果使用队列,可以避免锁的问题。
I. 什么是php锁定文件
语法
flock(file,lock,block)
参数
描述
file 必需。规定要锁定或释放的已打开的文件。
lock 必需。规定要使用哪种锁定类型。
block 可选。若设置为 1 或 true,则当进行锁定时阻挡其他进程。
说明
flock() 操作的 file 必须是一个已经打开的文件指针。
lock 参数可以是以下值之一:
要取得共享锁定(读取的程序),将 lock 设为 LOCK_SH(PHP 4.0.1 以前的版本设置为 1)。
要取得独占锁定(写入的程序),将 lock 设为 LOCK_EX(PHP 4.0.1 以前的版本中设置为 2)。
要释放锁定(无论共享或独占),将 lock 设为 LOCK_UN(PHP 4.0.1 以前的版本中设置为 3)。
J. PHP MYSQL中 表锁和行锁 一般什么情况下使用 另外具体怎么写
手动加锁:
表级锁
lock tables tablename read;//共享锁
lock tables tablename write;//排它锁
unlock tables;//解锁
php直接query就行了。
除了MyIsam,谁还会无聊到显式加锁?
InnoDB直接跑事务默认会触发隐式锁,不需要自己lock和unlock。