今天有一個(gè)朋友問(wèn)我thinkphp的這個(gè)問(wèn)題,剛好百度搜索到你這個(gè)問(wèn)題。已經(jīng)解決。就幫你解答一下這個(gè)問(wèn)題。

創(chuàng)新互聯(lián)建站是專業(yè)的壽縣網(wǎng)站建設(shè)公司,壽縣接單;提供網(wǎng)站設(shè)計(jì)制作、網(wǎng)站設(shè)計(jì),網(wǎng)頁(yè)設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行壽縣網(wǎng)站開發(fā)網(wǎng)頁(yè)制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來(lái)合作!
首先我嘗試在入口文件封裝一個(gè)加密函數(shù),我用php des 加密,然后在配置文件config.php調(diào)用。然后在控制器里面使用,打印配置文件:dump(C());//輸出所有的配置文件信息, 雖然能看到正確的數(shù)據(jù)用戶名和密碼,但是會(huì)報(bào)錯(cuò)。失敗告終。
我說(shuō)一下我的解決方法。很簡(jiǎn)單。
1:把配置文件里面的用戶名,密碼,數(shù)據(jù)庫(kù)名瞎寫一寫,別人看到你的代碼的配置文件看到的就是錯(cuò)誤的數(shù)據(jù)庫(kù)名和密碼了。比如:
'DB_NAME' = 'SB', // 數(shù)據(jù)庫(kù)名
'DB_USER' = 'ni_da_ye', // 用戶名
'DB_PWD' = 'da_da_bi', // 密碼
在每個(gè)控制器文件里面。加入一段代碼。
比如你的IndexController.class.php文件。加下面的代碼。
/* 初始化方法*/
public function __construct(){
parent::__construct();
C("DB_NAME",decrypt('712349721937491237'));//數(shù)據(jù)庫(kù)名,
C('DB_USER',decrypt('712349721937491237'));//用戶名
C('DB_PWD',decrypt('712349721937491237'));//密碼
}
看清楚了嗎?
decrypt()這個(gè)函數(shù)就是我封裝的一個(gè)加密函數(shù),親自測(cè)試沒有錯(cuò)誤。可能會(huì)犧牲一些性能。但是保證了用戶名,密碼,數(shù)據(jù)庫(kù)名沒有泄露。甚至你都可以把數(shù)據(jù)庫(kù)連接地址也加密一下。希望能幫到你。
PHP加密函數(shù)可以考慮用des,aes這些可逆加密。別用什么md4,md5.
一般情況下,MYSQL在更新操作會(huì)自動(dòng)加表鎖。不需要顯式加鎖。除非是數(shù)據(jù)要求嚴(yán)格的邏輯寫順序。
執(zhí)行查詢語(yǔ)句(SELECT)前,會(huì)自動(dòng)給涉及的所有表加讀鎖,在執(zhí)行更新操作 (UPDATE、DELETE、INSERT等)前,會(huì)自動(dòng)給涉及的表加寫鎖,這個(gè)過(guò)程并不需要用戶干預(yù),因此,用戶一般不需要直接用LOCK TABLE命令給MyISAM表顯式加鎖。
不需要加密,也無(wú)法加密。可以這么說(shuō),如果數(shù)據(jù)庫(kù)和程序是在同一服務(wù)器,及數(shù)據(jù)庫(kù)的地址是localhost,那么無(wú)需加密,因?yàn)榧用芰藬?shù)據(jù)庫(kù)并不能自己解密,而且只要網(wǎng)站或者服務(wù)器不被攻下,沒有加密的必要。
數(shù)據(jù)庫(kù)和php程序在不同的服務(wù)器,就是說(shuō)你在操作數(shù)據(jù)庫(kù)的時(shí)候需要遠(yuǎn)程操作,這樣的話需要傳輸數(shù)據(jù)庫(kù)賬號(hào)密碼,可以在本地加密后傳輸,然后在數(shù)據(jù)庫(kù)服務(wù)器進(jìn)行解密后,用原始的賬號(hào)密碼去操作數(shù)據(jù)庫(kù)。
--------------------------------------------------------一般來(lái)說(shuō),如果你擔(dān)心服務(wù)器被攻下,那么你加密數(shù)據(jù)庫(kù)賬號(hào)密碼是多余的,因?yàn)槿思蚁螺d你的源碼一看就知道鳥。
/**********************************************
*file?lock
*@author?Zeal?
Li
*
***********************************************/
/*
*lock_thisfile:獲得獨(dú)享鎖
*@param?$tmpFileStr?用來(lái)作為共享鎖文件的文件名(可以隨便起一個(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?
用來(lái)作為共享鎖文件的文件名(可以隨便起一個(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);
}
?
你的問(wèn)題是:
1. 很多文件,想多進(jìn)程處理,以提高效率,縮短總處理時(shí)間
2. 這些進(jìn)程只需要讀文件,不需要寫
3. 對(duì)每個(gè)文件,只要有一個(gè)進(jìn)程處理過(guò)它就可以了,沒有多個(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),可以通過(guò)對(duì)進(jìn)程自身的pid模運(yùn)算取余數(shù)得到,也可以在啟動(dòng)進(jìn)程的時(shí)候通過(guò)命令行傳入,隨你了
3. 每個(gè)進(jìn)程在處理文件前先對(duì)文件名做crc32()運(yùn)算,模一下進(jìn)程總數(shù): crc32(file_name) % 4, 取模結(jié)果與此進(jìn)程的序號(hào)相等就讀取內(nèi)容并處理,不相等就跳過(guò)
php將密碼存入數(shù)據(jù)庫(kù),可以分內(nèi)常見的4種方式:
1、直接md5加密存到到數(shù)據(jù)庫(kù)
2、md5兩次存到數(shù)據(jù)庫(kù)
3、對(duì)需要加密的字符串和一個(gè)常量 進(jìn)行混淆加密
4、生成一個(gè)隨機(jī)的變量存到數(shù)據(jù)庫(kù)中,然后對(duì)需要加密的字符串和這個(gè)隨機(jī)變量加密
?php$str="admin"; //需要加密的字符串$str2="php"; //增加一個(gè)常量混淆 $pass1=md5($str);$pass2=md5(md5($str));$pass3=md5($str.$str2);echo $pass1."br".$pass2."br".$pass3;?
輸出:
第四種
$str="admin"; //需要加密的字符串$encrypt=$row['encrypt']; // 生成的 隨機(jī)加密字符串 存到數(shù)據(jù)庫(kù)中$pass4=md5($str.$encrypt);// 8db2ec7e9636f124e56f7eb4d7b7cc7e
網(wǎng)頁(yè)標(biāo)題:php讀者數(shù)據(jù)庫(kù)加鎖 php mysql 加鎖
本文網(wǎng)址:http://www.chinadenli.net/article8/hipcop.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供App設(shè)計(jì)、用戶體驗(yàn)、標(biāo)簽優(yōu)化、品牌網(wǎng)站設(shè)計(jì)、定制網(wǎng)站、網(wǎng)站改版
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)