php加密平臺(tái)自開通以來已加密了670367個(gè)php文件,總數(shù)據(jù)大小5823.04 MB2015-04-18更新:PHP在線加密Beta版支持命名空間加密,即php源碼中有namespace的文件加密。2015-01-13維護(hù):修復(fù)PHP5.5及以上php版本更好支持php加密(免費(fèi)版已不更新,不修復(fù))
目前累計(jì)服務(wù)客戶千余家,積累了豐富的產(chǎn)品開發(fā)及服務(wù)經(jīng)驗(yàn)。以網(wǎng)站設(shè)計(jì)水平和技術(shù)實(shí)力,樹立企業(yè)形象,為客戶提供網(wǎng)站建設(shè)、成都做網(wǎng)站、網(wǎng)站策劃、網(wǎng)頁設(shè)計(jì)、網(wǎng)絡(luò)營銷、VI設(shè)計(jì)、網(wǎng)站改版、漏洞修補(bǔ)等服務(wù)。創(chuàng)新互聯(lián)建站始終以務(wù)實(shí)、誠信為根本,不斷創(chuàng)新和提高建站品質(zhì),通過對(duì)領(lǐng)先技術(shù)的掌握、對(duì)創(chuàng)意設(shè)計(jì)的研究、對(duì)客戶形象的視覺傳遞、對(duì)應(yīng)用系統(tǒng)的結(jié)合,為客戶提供更好的一站式互聯(lián)網(wǎng)解決方案,攜手廣大客戶,共同發(fā)展進(jìn)步。
php授權(quán)用戶動(dòng)態(tài)簡化,只記錄授權(quán)變化狀態(tài)2014-12-09新增自定義授權(quán)錯(cuò)誤信息提示(以前為白屏)2014-06-22新增支持heredoc和nowdoc語法結(jié)構(gòu)的字符串2014-03-24修復(fù)部份代碼中使用__FILE__不兼容的BUG2013-09-02修改:php免費(fèi)加密后版權(quán)信息中增加中文聲明2013-08-01新增功能:授權(quán)版可鎖定php文件加密的文件名,php文件加密后不允許更改文件名。此功能配合鎖定域名功能效果更佳。
修復(fù):部份環(huán)境中獲取不到服務(wù)器IP地址2013-06-20維護(hù):常規(guī)更新維護(hù),PHP加密代碼小調(diào)整。2013-05-12修改:重寫授權(quán)版的PHP加密算法,提高對(duì)代碼的保護(hù)。2013-04-11調(diào)整:發(fā)現(xiàn)有個(gè)別用戶使用我們免費(fèi)的php加密平臺(tái)對(duì)php源碼加密后作為非法用途,因此把免費(fèi)版對(duì)上傳的php文件大小調(diào)整為50K。2013-03-11修改:為了加強(qiáng)付費(fèi)授權(quán)版的使用安全,把免費(fèi)版和付費(fèi)授權(quán)版的算法分開處理。以后升級(jí)過程中主要針對(duì)付費(fèi)授權(quán)版進(jìn)行升級(jí),免費(fèi)版只做BUG修復(fù)處理。2013-02-01修改:免費(fèi)版的版權(quán)信息中不再顯示內(nèi)核更新日期。
修改:編碼加強(qiáng)混淆程度2013-01-07修改:php加密后的代碼中去除“PHPJM_”標(biāo)志性字符。
新增:先對(duì)php源碼壓縮后再加密,減小加密后的php文件大小
修復(fù):php源代碼中的php標(biāo)簽只有?而沒有?時(shí)的BUG2012-12-11新增功能:授權(quán)版可鎖定在某個(gè)日期段內(nèi)運(yùn)行,可將您的代碼以試用方式進(jìn)行發(fā)布。
修改:不再限制加密后的文件以.php為擴(kuò)展名運(yùn)行,支持以任何擴(kuò)展名保存加密后的文件。
修復(fù):自定義版權(quán)信息亂碼BUG2012-11-14PHP在線加密平臺(tái)上線2012-11-06完成PHP加密核心算法代碼。
/**********************************************
*file?lock
*@author?Zeal?
Li
*
***********************************************/
/*
*lock_thisfile:獲得獨(dú)享鎖
*@param?$tmpFileStr?用來作為共享鎖文件的文件名(可以隨便起一個(gè)名字)
*@param?$locktype?鎖類型,缺省為false(非阻塞型,也就是一旦加鎖失敗則直接返回false),設(shè)置為true則會(huì)一直等待加鎖成功才返回
*@return?如果加鎖成功,則返回鎖實(shí)例(當(dāng)使用unlock_thisfile方法的時(shí)候需要這個(gè)參數(shù)),加鎖失敗則返回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");
}
return?false;
}
}
/**?
*unlock_thisfile:對(duì)先前取得的鎖實(shí)例進(jìn)行解鎖
*@param?$fp?lock_thisfile方法的返回值
*@param?$tmpFileStr?
用來作為共享鎖文件的文件名(可以隨便起一個(gè)名字)
*/
function?
unlock_thisfile($fp,$tmpFileStr){
@flock($fp,LOCK_UN);
@fclose($fp);
@fclose($fp);
@unlink($tmpFileStr.".lock");
}
?
?php
//?使用舉例
$tmpFileStr?=?"/tmp/mylock.loc";
//?等待取得操作權(quán)限,如果要立即返回則把第二個(gè)參數(shù)設(shè)為false.
$lockhandle?=?
lock_thisfile($tmpFileStr,true);
if($lockhandle){
//?
在這里進(jìn)行所有需要獨(dú)占的事務(wù)處理。
//?...?...
//?事務(wù)處理完畢。
unlock_thisfile($lockhandle,$tmpFileStr);
}
?
對(duì)于PHP的鎖,其實(shí)并沒有什么太多的概念。拋棄一些第三方的依賴,看看有哪些可用的選擇。
目前可以想到的就這么多,在該項(xiàng)目中我們采用文件鎖,因?yàn)槠渌膬蓚€(gè)需要裝擴(kuò)展。文件鎖的邏輯就非常簡單了
從網(wǎng)上摘抄了一個(gè)例子,使用的 eAccelerator 和 文件鎖兩種 傳送門
使用方法
你的問題是:
1. 很多文件,想多進(jìn)程處理,以提高效率,縮短總處理時(shí)間
2. 這些進(jìn)程只需要讀文件,不需要寫
3. 對(duì)每個(gè)文件,只要有一個(gè)進(jìn)程處理過它就可以了,沒有多個(gè)進(jìn)程都必須處理它的需求
你的需求其實(shí)是分治,將文件分為多個(gè)組(不一定要在文件系統(tǒng)上新建目錄),然后分而治之,這種情況不需要用鎖.
鎖不是用于這種場(chǎng)景的,鎖用于下面這種場(chǎng)景:
1. 文件file.txt里面記錄了user1的銷售額和user2的銷售額,user1+user2的銷售總額
2. 進(jìn)程php1負(fù)責(zé)寫入user1的數(shù)據(jù),進(jìn)程php2負(fù)責(zé)寫入user2的數(shù)據(jù),兩個(gè)進(jìn)程各讀出銷售總額顯示給user1,user2
建議你這樣解決:
1. 啟動(dòng)多個(gè)PHP進(jìn)程(nohup php your_script.php your_dir )
2. 每個(gè)PHP進(jìn)程賦予一個(gè)序號(hào)(假設(shè)4個(gè)進(jìn)程,那就0,1,2,3),可以通過對(duì)進(jìn)程自身的pid模運(yùn)算取余數(shù)得到,也可以在啟動(dòng)進(jìn)程的時(shí)候通過命令行傳入,隨你了
3. 每個(gè)進(jìn)程在處理文件前先對(duì)文件名做crc32()運(yùn)算,模一下進(jìn)程總數(shù): crc32(file_name) % 4, 取模結(jié)果與此進(jìn)程的序號(hào)相等就讀取內(nèi)容并處理,不相等就跳過