A. php+mssql 和 php+mysql 優點缺點
一、PHP+MySql
優點:
1) MySql是一個快速、多線程、多用戶的SQL資料庫伺服器。
2) MySql的核心程序採用完全的多線程編程。
3)MySql可運行在不同的操作系統下。
4) MySql有一個非常靈活而且安全的許可權和口令系統。
5) MySql支持ODBC for Windows。
6)MySql支持大型的資料庫。
7) MySql擁有一個非常快速而且穩定的基於線程的內存分配系統,可以持續使用面不必擔心其穩定性。
8) 強大的查詢功能。
9)PHP為MySql提供了強力支持,PHP中提供了一整套的MySql函數,對MySql進行了全方位的支持。
缺點:
比較的難學;
MySQL不完全支持陌生的關鍵詞;
MySQL也缺乏一些存儲程序的功能;
使用預設的ip埠,但是有時候這些ip也會被一些黑客闖入;
使用myisam配置,如果你不慎損壞資料庫,結果可能會導致所有的數據丟失;
二、PHP+MsSql
優點:
上手容易; 兼容性良好; 利於構築"敏捷性商務";
缺點:
只能在windows 上運行,沒有絲毫的開放性,操作系統的系統的穩定對資料庫是十分重要的。
並行實施和共存模型並不成熟。很難處理日益增多的用戶數和數據卷。伸縮性有限;
安全性方面,沒有獲得任何安全證書;
客戶端支持及應用模式 ,是C/S結構,只支持windows客戶,可以用ADO, DAO,OLEDB,
ODBC連接;
不是免費的;
數據不容易恢復;
B. 大家php mysql多的話是用什麼備份工具的
下面提供兩種方法,僅供研究使用。
第1種方法:
復制代碼 代碼如下:
<?php
$host="localhost";
$user="root";
$password="";
$dbname="dbname";
mysql_connect($host,$user,$password);
mysql_select_db($dbname);
$mysql= "set names utf8;";
mysql_query($mysql);
$q1=mysql_query("show tables");
while($t=mysql_fetch_array($q1)){
$table=$t[0];
$q2=mysql_query("show create table `$table`");$sql=mysql_fetch_array($q2);
$mysql.=$sql['Create Table'].";\n";
$q3=mysql_query("select * from `$table`");while($data=mysql_fetch_assoc($q3)){
$keys=array_keys($data);
$keys=array_map('addslashes',$keys);
$keys=join('`,`',$keys);
$keys="`".$keys."`";
$vals=array_values($data);
$vals=array_map('addslashes',$vals);
$vals=join("','",$vals);
$vals="'".$vals."'";
$mysql.="insert into `$table`($keys) values($vals);\n";}
$mysql.="\n";
}
$filename=$dbname.date('Ymj').".sql";
$fp = fopen($filename,'w');
fputs($fp,$mysql);
fclose($fp);
echo "數據備份成功,生成備份文件".$filename;?>
第2種方法:
復制代碼 代碼如下:
<?php
$host="localhost";
$user="root";
$password="";
$dbname="dbname";
backup_tables($host,$user,$password,$dbname);/* backup the db OR just a table */
function backup_tables($host,$user,$pass,$name,$tables = '*'){
$link = mysql_connect($host,$user,$pass);mysql_select_db($name,$link);
//get all of the tables
if($tables == '*')
{
$tables = array();
$result = mysql_query('SHOW TABLES');
while($row = mysql_fetch_row($result))
{
$tables[] = $row[0];
}
}
else
{
$tables = is_array($tables) ? $tables : explode(',',$tables);}
$return = '';
//cycle through
foreach($tables as $table)
{
$result = mysql_query('SELECT * FROM '.$table);$num_fields = mysql_num_fields($result);
$return.= 'DROP TABLE '.$table.';';
$row2 = mysql_fetch_row(mysql_query('SHOW CREATE TABLE '.$table));$return.= "\n\n".$row2[1].";\n\n";
for ($i = 0; $i < $num_fields; $i++)
{
while($row = mysql_fetch_row($result))
{
$return.= 'INSERT INTO '.$table.' VALUES(';for($j=0; $j<$num_fields; $j++)
{
$row[$j] = addslashes($row[$j]);
$row[$j] = ereg_replace("\n","\\n",$row[$j]);if (isset($row[$j])) { $return.= '"'.$row[$j].'"' ; } else { $return.= '""'; }
if ($j<($num_fields-1)) { $return.= ','; }
}
$return.= ");\n";
}
}
$return.="\n\n\n";
}
//save file
$handle = fopen('db-backup-'.time().'-'.(md5(implode(',',$tables))).'.sql','w+');fwrite($handle,$return);
fclose($handle);
}
?>
C. PHP+MySQL鑳藉仛浠涔堬紵
PHP+MySQL鏄浠婂ぉ鐢ㄧ殑鏈澶氱殑鍔ㄦ佺粨鍚堟妧鏈錛屾槸緗戠珯紼嬪簭鍛樺紑鍙戝簲鐢ㄨ蔣浠剁郴緇熺殑涓繪祦鎶鏈銆
鍙浠ュ仛涓涓灝忕綉絝橮HP+MYSQL
PHP闅忕潃鍙戝睍鏄濂藉嚑涓鍚嶅瓧鐨勭緝鍐欙紝瀹氫箟涓篜HP鏄涓縐岺TML鍐呭祵寮忕殑璇璦錛屾槸涓縐嶅湪鏈嶅姟鍣ㄧ鎵ц岀殑宓屽叆HTML鏂囨。鐨勮剼鏈璇璦錛岃璦鐨勯庢牸鏈夌被浼間簬C璇璦錛岃騫挎硾鐨勮繍鐢ㄣ備富瑕佺敤浜嶹EB寮鍙戱紝鏄寮婧愮殑鑴氭湰璇璦銆侻ySQL鏄涓涓灝忓瀷鍏崇郴鍨嬫暟鎹搴撶$悊緋葷粺銆傜洰鍓岻nternet涓婃祦琛岀殑緗戠珯鏋勬灦鏂瑰紡鏄疞AMP錛圠inux+Apache+MySQL+PHP錛夛紝鍗充嬌鐢↙inux浣滀負鎿嶄綔緋葷粺錛孉pache浣滀負Web鏈嶅姟鍣錛孧ySQL浣滀負鏁版嵁搴擄紝PHP浣滀負鏈嶅姟鍣ㄧ鑴氭湰瑙i噴鍣ㄣ
D. Python/PHP MySQL語句解析器解決業務分表
自己曾經做過一個網盤項目。剛開始由於需要快速地從0到1建設上線,所以沒有對核心文檔表進行分表。當然我的架構理念也是「按需架構設計」。產品需求在沒有明確的長遠計劃的情況下以「小步快跑,趕超競品」為主。後期由於產品功能觸達目標用戶群需求點、產品用戶體驗不斷提升、產品多方位導流、加強產品推廣文檔表每天有百萬數據增長量。不得不對文檔表進行按用戶id分表。當時產品功能已全覆蓋文檔的生命周期。產品功能已豐富多彩。修改所有關聯文檔表的業務代碼為按用戶id分表開發測試成本非常高。上線後線上問題不可控。經過考慮在業務代碼最底層DB層進行SQL語句解析來進行用戶id分表處理。這樣的話開發測試成本都非常低。上線後有問題方便回滾和追查原因。
今天為大家介紹Python/PHP兩種MySQL語句解析器。當時網盤項目用的是PHP編程語言開發。
Python的SQL語句解析器 。個人推薦使用moz_sql_parser庫。經調研官方的sqlparse庫解析出來的語句段無法滿足需求也很難理解。
1、Python moz_sql_parser庫安裝
2、Python moz_sql_parser SQL語句解析
3、Python moz_sql_parser總結
PHP的SQL語句解析器。 個人推薦使用PhpMyAdmin的sql-parser組件。PhpMyAdmin是經過 歷史 檢驗可信賴的。
1、PHP PhpMyAdmin/sql-parser安裝
2、PHP PhpMyAdmin/sql-parser SQL語句解析
3、PHP PhpMyAdmin/sql-parser總結
大家有什麼問題可以發評論溝通。