メモログ【三】


1、[2012-04-16]thinksaasにおけるプラグインフック関数
//  app       ,   Emlog
/**
*          ,             
*
* @param string $hook
* @param string $actionFunc
* @return boolearn
*/
function addAction($hook, $actionFunc){
	global $tsHooks;
	if (!@in_array($actionFunc, $tsHooks[$hook])){
		$tsHooks[$hook][] = $actionFunc;
	}

	return true;
}

/**
*           ,      eg:doAction('post_comment', $author, $email, $url, $comment);
*
* @param string $hook
*/
function doAction($hook){
	global $tsHooks;
	$args = array_slice(func_get_args(), 1);
	if (isset($tsHooks[$hook])){
		foreach ($tsHooks[$hook] as $function){
			$string = call_user_func_array($function, $args);
		}
	}
}

バックグラウンドでプラグインを開くとaddAction()関数が呼び出され、そのプラグインの関数をシステムの予約したフックに登録します.
//       

function gotop_html(){
	echo '

$(function(){
	//document.execCommand("BackgroundImageCache", false, true);
	$(".go-top").goToTop({});
	$(window).bind("scroll resize",function(){
		$(".go-top").goToTop({});
	});
});
';
}

addAction('pub_footer', 'gotop_html');

フックに引っ掛かる関数を実行するときにテンプレートのリーフでdoAction()関数を呼び出します.
{php doAction('pub_footer')}
2、[2012-04-18]window.location.hashプロパティの説明
locationはjavascriptの管理アドレスバーに組み込まれたオブジェクトです.例えばlocation.hrefはページのurlを管理しlocationを使う.href=urlは、ページをurlに直接リダイレクトできます.そしてlocation.hashは、ページのラベル値を取得または設定するために使用できます.たとえばhttp://domain/#adminのlocation.hash="#admin".この属性値を利用すると、非常に有意義なことができます.
多くの人はウェブページをコレクションするのが好きで、後で閲覧しやすいです.しかし、Ajaxページにとっては、すべての事務を1つのページで処理するのが一般的です.つまり、Ajaxページの中の面白い内容を見て、それを収蔵したいと思っていますが、住所は1つしかありません.今度このアドレスを開くには、いつものようにページをクリックして、好きなページを見つけなければなりません.また、ブラウザの「進む」「戻る」ボタンも無効になり、従来のページに慣れている多くのユーザーにとっては、大きな使用障害になります.
では、locationはどう使いますか.hashはこの2つの問題を解決しますか?実は少しも神秘的ではありません.
例えば、私の著者管理システムは、主な機能は3つあります:普通の検索、高級な検索、バックグラウンド管理、私はそれぞれhash値を割り当てます:#search、#advsearch、#admin、ページの初期化の時、windowを通じて.location.hashは,ユーザがアクセスする必要があるページを判断しjavascriptにより表示ページを調整する.例:
var hash; 
hash=(!window.location.hash)?"#search":window.location.hash; 
window.location.hash=hash; 
  //       ,   、        
switch(hash){   
case "#search":  
    selectPanel("pnlSearch");   //          
    break;    
case "#advsearch":    
      
case "#admin":  
     
}

Windowsを通ります.location.hash=hashという文はアドレスバーのアドレスを調整し、ブラウザ内の「前進」、「後退」ボタンが正常に使用できるようにする(実質的にブラウザをだました).次にhash値によって異なるパネル(ユーザーが対応するパネルをコレクションできるようになった)を表示することで、Ajaxページの閲覧が伝統化しています.
3、[2012-04-20]あるクエリーを実行mysqlが詰まっている!!
処理方法:クライアントがmysqlにログインした後、どのリソースが最も占めているかを確認し、killがpid.
ログイン:mysql-uroot-p
すべてのmysql内部プロセスを表示する:show processlist;
すべてのmysql内部プロセスを表示し、Timeというフィールドの降順にソートします:SELECT*FROM INFORMATION_SCHEMA.PROCESSLIST order by time desc
最後のkill pid
4、[2012-04-20] mysql.sockファイルの役割
これはsockはmysqlのホストとクライアントが同じhostにいるときにunix domain socketを通信プロトコルの担体として使用するべきで、tcpより速い.Mysqlには,(1),TCP/IP(2),socket対mysqlの2つの接続方式がある.sockにとって、プログラムはmysqlserverと同じマシンにあり、ローカル接続を開始するときに使用できる役割を果たします.たとえば、ホストに接続する具体的なIPを定義する必要はありません.空またはlocalhostであればいいです.この場合、mysqlの外部portを変更しても正常に接続できます.君がいるからiniまたはmy.cnfでポートを変更するとmysql.sockはmysql serverの起動ごとに生成されます.あなたが変更したことに基づいてmy.cnf後にmysqlを再起動すると再生成され、情報は変更されました.では、外部接続については、portを変更しなければ接続できません.linuxの下でmysql接続をインストールする時よくmysqlが見つからないとヒントを返します.sockファイル、解決方法は簡単です:新しくインストールしたmysqlで、ファイルが見つからないことを提示したら、検索して、正しい位置を指定します.もしmysql.sockファイルを誤って削除するとmysqlサービスを再起動する必要があり、再起動に成功するとdatadirディレクトリの下にmysqlが生成されます.sockはその時に指定すればいいです.まだだめならTCP接続で接続すればいいのに、windowsではパイプ接続もサポートされています.
5、[2012-04-24]nginxとapacheとphp随記
    location ~ .*\.(php|php5)?$     {             #fastcgi_pass  unix:/tmp/php-cgi.sock;       fastcgi_pass  127.0.0.1:9000;       fastcgi_index index.php;       include fcgi.conf;     }
ここではphpファイルであればproxyを介してphp-fpmプロセス処理に渡され、nginx自体はPHPを解析できないように構成されています... 
apacheはmodule方式でphpを実行してもよいしfastcgi方式でphpを実行してもよい
php-fpmはPHPのサービスです.
php-fpmはphp-cgiプロセスを管理するために使用されます.
Nginxエージェントアクセスはphpへのアクセスをphp-fpmに投げつける.fpmはまた、php-cgiプロセスからphpスクリプトの実行を選択し、戻ります.
nginxはapacheより静的ファイルの耐圧性能が優れているだけです
phpの性能を走ってapache+mod_がありませんphp性能が良い
もう一つの組み合わせはnginx+apacheです
nginxは静的ファイルを担当し、phpのapacheへの転送を担当します.
6、[2012-04-25]PHP運転モード
現在
HTTPServer
これは基本的に3種類見られます
stack
流行:
(1)Apache+mod_php5
(2)lighttp+spawn-fcgi
(3)nginx+PHP-FPM
3つ後の両方のパフォーマンスはやや優れているかもしれませんが、
Apacheは豊富なモジュールと機能を持っているため、現在もボスです.ある人はnginx+PHP-FPMが高い同時の情況の下で達成することができることをテストします
Apache+mod_php 5の5~10倍、現在はnginx+PHP-FPMを使う人が増えています.
7、[2012-04-28]Linuxでサイズ別にディレクトリを検索
find/opt/discuzx-size+20480 k=」これは検索ファイルで、ディレクトリが見つかりません.find/opt/discuzx-size+20480 k-type d=」20 M以上のディレクトリはなぜか見つからない.
du-h/opt/discuzx==』にリストされているディレクトリが多すぎて、私が望んでいるものではありません.du-k/opt/discuzx/|sort-nr|more==これはディレクトリごとに大きいから小さいまで並べることができます.
8、[2012-05-05]linuxはプロセスをバックグラウンドで実行する
次のコマンドでは、バックグラウンドに挿入されたコマンドを制御して、現在の端末のバックグラウンドプロセスを表示できます.直接実行します.jobsは、表示されたバックグラウンドプロセスをフロントに戻します.直接入力:fg{jobid}//ここの{jobid}は、jobsコマンドで表示されたプロセスの前[]の数字です.現在フロントで実行中のプロセスをバックグラウンドで実行します.ショートカットキーを押してください.ctrl+z//現在実行中のプロセスを一時停止します.再実行:bgフロントで現在実行中のプロセスを終了する:ショートカットキーを直接叩く:ctrl+c現在のバックグラウンドプロセスjobs-lを表示する
9,[2012-05-11]Linuxでのvmstatコマンド.
このコマンドは私がLinux/Unixを表示するのに一番好きなコマンドです.一つはLinux/Unixがサポートしています.二つ目はtopに比べて、各プロセスのCPU使用率とメモリ使用率(使用シーンが違います)ではなく、機械全体のCPU、メモリ、IOの使用状況を見ることができます.
10、[2012-05-11]サーバでは、パケットが失われたり、問題を特定するプロセスが頻繁に発生します.
最近、サービスがカバンをなくすことがよくありますが、この問題は長い間悩んでいました.ブロードバンドが不足していました.
質問を検索する手順は、次のとおりです.
1.ファイアウォールを使用して、すべての80ポートへのアクセスを制限すると、すぐに正常に戻ります.
2.異常発生時のサーバのcpu、メモリ、ハードディスク負荷を確認します.データは正常に表示されます.
3.検査流量異常発生時は流量が低く、正常3秒毎の出力は10~15 Mb程度であるはずであるが、異常発生時は1~5 Mbしかない.異常時、私たちのポートの流量は、走れません.
まとめ:確認するのは:1.私たちは同じ箱の他の機械の流量です.2.同じ戸棚出口の当時の流量はどれくらい~
検索中に使用されるいくつかのコマンド:
  843  ./b.sh -i eth1   844  netstat -nao   845  netstat -nao|grep 3306   847  pstree   848  LANG=c   852  /usr/local/webserver/php/sbin/php-fpm stop   853  s -axwf   854  netstat -nao   858  ps -axwf|grep nginx   867  ps -axwf|grep mysql   868  netstat -nao|grep 3306   869  dmesg   870  dmesg|grep eth   872  tail -2000/var/log/messages|more   873  tail -2000/var/log/messages|grep eth0   875  grep eth0/var/log/messages.*   881  ./b.sh -i eth0   882  vmstat 2   883  pstree|grep http   884  pstree|grep php   898  more/etc/snmp/snmpd.conf   900  iptables -I INPUT -p tcp -m tcp --dport 80 -j REJECT   901  iptables -nL   902  netstat -nao|more   903  iptables -D INPUT -p tcp -m tcp --dport 80 -j REJECT   907  yum install iftop   909  wget http://www.ex-parrot.com/~pdw/iftop/download/iftop-0.17.tar.gz   910  tar -zxvf iftop-0.17.tar.gz -C/usr/src   911  yum install flex byacc libpcap ncurses ncurses-devel libpcap-devel   912  cd/usr/src/iftop-0.17/  913  ./configure   914  make   915  make install   916  iftop   918  iptables -I INPUG -s 119.146.144.139 -j REJECT   919  iptables -I INPUT -s 119.146.144.139 -j REJECT   920  iptables -I INPUT -s 116.5.168.113 -j REJECT   924  /usr/local/webserver/php/sbin/php-fpm start   930  iptables -nL   931  iptables -I INPUT -p tcp -m tcp --dport 80 -j REJECT   932  iptables -D INPUT -p tcp -m tcp --dport 80 -j REJECT   949  grep POST *.log|more|grep -v "login.php\|forum.php\|member.php"|more   950  grep POST *.log|more|grep -v "login.php\|forum.php\|member.php"|grep baid     881  netstat -nao|grep "232:80 "|awk -F ":"'{printf $2""}'   882  netstat -nao|grep "232:80 "|awk -F ":"'{printf $2""}'|awk '{printf $2 ""}'   883  netstat -nao|grep "232:80 "|awk -F ":"'{printf $2""}'|awk '{printf $2 ""}'|sort |uniq   884  netstat -nao|grep "232:80 "|awk -F ":"'{printf $2""}'|awk '{printf $2 ""}'|sort |uniq >>ip_access.txt