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。