T086ѧϰ�� | վ��ѧԺ | �����ĵ� | ���� | Ъ���� | IP��ַ��ѯ | �������� | ���ջ��� | �����ֵ� | ���ù��� | ������Ϣ��ѯ

�������� LAMP Ӧ�ó����� 5 �ּ򵥷���

�� ����ʱ�䣺2011-03-13 | ���壺�� �� С��
[����]John Mertic, ��������ʦ, SugarCRM ���� Wikipedia��Facebook �� Yahoo! ����Ҫ web ����ʹ�� LAMP �ܹ���Ϊÿ���������������ṩ���񣬶� Wordpress��Joomla��Drupal �� SugarCRM �� web Ӧ�ó�������ʹ�����ܹ���...

John Mertic, ��������ʦ, SugarCRM
����

Wikipedia��Facebook �� Yahoo! ����Ҫ web ����ʹ�� LAMP �ܹ���Ϊÿ���������������ṩ���񣬶� Wordpress��Joomla��Drupal �� SugarCRM �� web Ӧ�ó�������ʹ�����ܹ�������֯���ɲ������� web ��Ӧ�ó�����

�üܹ������������������ԡ��� .NET �����Ķ�ջ�� Java™ ��������ʹ�ô���Ӳ��������������ջ�͸��ӵ����ܵ��ţ�LAMP ��ջ������������ƷӲ��֮�ϣ�ʹ�ÿ�Դ����ջ����������ջ��һ����ɢ��������������һ��������ջ�����ܵ�����һ����ս����Ϊ��Ҫ�����͵���ÿ��������

Ȼ�������м����������������������κι�ģ����վ�����ܲ����޴���Ӱ�졣�ڱ����У����ǽ�̽��ּ���Ż� LAMP Ӧ�ó������ܵ� 5 ����������������Щ��ĿӦ��������Ҫ������Ӧ�ó������мܹ����ģ�ʹ����Ϊ���������� web Ӧ�ó�����������Ӧ������Ӳ�������İ�ȫ�����ݵ�ѡ����


--------------------------------------------------------------------------------

ʹ�ò����뻺��

�����κ� PHP Ӧ�ó��򣨵�Ȼ�� LAMP �е� “P”�������ܵ����򵥷�ʽ������һ�������뻺�档������ʹ�õ��κ���վ��������ȷ�����ڵ�һ�����ݣ���Ϊ����Ӱ���ܴ󣨺ܶ�ʱ�����˲����뻺�棬��Ӧʱ���ɼ���һ�룩�����Ƕ� PHP ����Ϥ�Ĵ󲿷��˵�һ���ܴ��������ǣ�Ϊ�θĽ�������֮�󡣴������� PHP ���δ��� web ������ͼ 1 ������ PHP ���������̡�


ͼ 1. PHP ����
ͼ��չʾ PHP ���������̣��� PHP �ű�������������������

 

���� PHP ��һ�ֽ������ԣ����� C �� Java �ȱ������ԣ���ÿ������ִ���� “����-����-ִ��” ���������衣�����Կ���Ϊ��������ʱ������Դ���ر��ǵ��ű�������֮�����ٱ仯ʱ�������ͱ����ű�֮�󣬽ű���Ϊһϵ�в����봦�ڻ����ɽ���״̬�����Dz����뻺�淢��Ч�õĵط�������Ϊһϵ�в����뻺����Щ�����ű����Ա���Ϊ�����ͱ���ÿ���������衣������ͼ 2 �п��������Ĺ����������������ġ�


ͼ 2. PHP ����ʹ�ò����뻺��
����ͼչʾ�߼������μ��黺���IJ����벢���������ͱ��벽�裨�����еĻ���

 

���˵� PHP �ű��Ļ�������������ʱ�����ǿ������� PHP �������̵Ľ����ͱ��벽�裬ֱ��ִ�л��������벢���������������㷨�������������ܶԽű��ļ������˸��ĵ��������������ѱ����ű��ĵ�һ�������󣬻�Ϊ�����������Զ����±����ͻ��������룬�滻�����Ľű���

�����뻺������ PHP �����Ѿã��������ڵ�һЩҪ׷�ݵ� PHP V4 ��ȫʢ�ڡ�Ŀǰ��һЩ����ѡ�����ڻ���������ʹ���У�

  • ���� PHP ���棨APC�������� PHP �����еIJ����뻺�棨�μ� �ο����������������ɺ��� PHP ������Ա�������������˺ܴ����ף�Facebook �� Yahoo! �Ĺ���ʦ���������ٶȺ��ȶ��ԡ�����֧�����ڴ��� PHP ���������������ٶȸĽ�������һ���û������������⽫�ڱ��ĺ���̽�֡�
  • Wincache ����Ҫ�� Microsoft® �� Internet Information Services (IIS) �Ŷӻ���������һ�������뻺�棬������ʹ�� IIS web �������� Windows® ��ʹ�ã��μ� �ο�������������������Ҫ��������ʹ PHP ��Ϊ Windows-IIS-PHP ��ջ�ϵ�һ������ƽ̨����Ϊ��֪ APC �ڸö�ջ�������IJ��Ǻܺá����ڹ����Ϸdz������� APC����֧��һ���û������������Լ�һ�����ûỰ�����������Խ� Wincache ��Ϊһ���Ự��������ֱ�Ӽ������á�
  • eAccelerator ��ԭʼ PHP ����֮һ Turck MMCache �����뻺�棨�μ� �ο���������һ����������ͬ�� APC �� Wincache��������һ�������뻺�����Ż������������������û��������������� UNIX® �� Windows ��ջ����ȫ���ݣ��Ҷ��ڲ��������� APC �� Wincache �ṩ���������ܵ�վ�������С�������Ҫʹ�� memcache �����Ľ���������Ϊ�� web �����������ṩһ���������û���������������ô�����dz���������

�������ʣ�һ�������뻺����ͨ����ÿ�����������������ͱ����ű�����Ҫ������ PHP �ĵ�һ�������ɵ�һ��֮������Ӧ��������Ӧʱ���ͷ��������ط����ĸĽ��������Ż� PHP �������IJ�ֹ��Щ�����ǽ��������������ۡ�
--------------------------------------------------------------------------------

������ PHP ����

��Ȼʵ�ֲ����뻺�������ܸĽ���һ�󴴾٣�����Ҳ�д��������Ż�ѡ���ɹ������� php.ini �ļ��е������Ż����� PHP ���á���Щ���ø��ʺ�������ʵ�����ڿ���������ʵ���ϣ������ܲ�ϣ������Щ��������Ϊ����ʹ��Ӧ�ó��������ĵ��Ա��ø��ѡ�

�����ǿ�һ�¶���������������Ҫ��һЩ��Ŀ��

Ӧ�����õ�ѡ��

������ php.ini ����Ӧ�����Խ��ã���Ϊ���dz��������������ԣ�

•register_globals — �� PHP V4.2 ֮ǰ�ù��ܳ�����Ĭ��ֵ�����д����������������Զ�������ͨ PHP ���������������������ش���ȫ����֮�⣨ʹδ���˵Ĵ���������������ͨ PHP �����������죩����ÿһ�����������������������������˽�����һ����ʹ����Ӧ�ó�������ȫ�����������ܡ�
•magic_quotes_* — ���� PHP V4 ����һ��������д��������ݻ��Զ��ܿ��з��յı������ݡ���ּ����Ϊһ����ȫ���ԣ��ڽ����������ݷ��͵����ݿ�֮ǰ�������������������Ǻ���Ч����Ϊ�����ܰ����û�Ԥ�������� SQL ע�빥�������ڴ󲿷����ݿ���֧���ܸ��õش����÷��յ�׼�����䣬���ø����û��ٴ������������˵��������⡣
•always_populate_raw_post_data — ������������ijЩԭ����Ҫ�鿴������δ���� POST ���ݵ���������ʱ����Ҫ���������������ڴ��д洢 POST ���ݵ�һ������������û�б�Ҫ��
Ȼ���������������Ͻ�����Щѡ�����з��գ���Ϊ���ǿ���ȡ������������ʵ����ȷִ�С���Ӧ�����ڱ����õ���Щѡ���������κ��´��룬���ҿ��ܵĻ�����Ӧ��Ѱ�󷽷����ع��������д��룬����ʹ�����ǡ�

Ӧ�����û��������õ�ѡ��

���������� php.ini �ļ���һЩ��������ѡ����������Ľű��ٶȣ�

•output_buffering — ��Ӧ��ȷ�����ø�ѡ���Ϊ�����Կ�Ϊ��λ������ˢ�ص���������������ÿ�� echo �� print ����Ϊ��λ�������߻�������������������Ӧʱ�䡣
•variables_order — ����ָ�����ƴ��������� EGPCS��Environment��Get��Post��Cookie �� Server����������˳����������û��ʹ��ij�ֳ�ȫ�ֱ��������绷���������������԰�ȫ��ɾ������������һ�����٣��Ӷ�������ÿһ�������Ͻ������ǡ�
•date.timezone — ������ PHP V5.1 �����ӵ�һ��ָ���������Ĭ��ʱ����Ȼ�����ں��潫Ҫ���ܵ� DateTime ���������������� php.ini �ļ������ø�ѡ�PHP ��ִ�д���ϵͳ������Ū������ʲô������ PHP V5.3 �У���ÿһ�������ᷢ��һ�����档
����Ӧ������������ʵ�������õ����ö��ԣ���Щ�������� “���ֿɵ�”���� PHP ���ԣ�����һ������Ҫ���ǡ�����������Ӧ�ó����� require() �� include()���Լ���ͬ�� require_once() �� include_once()����ʹ�á���Щ�����Ż����� PHP ���úʹ��룬�Է�ֹ��ÿ���������в���Ҫ���ļ�״̬���飬�Ӷ�������Ӧʱ�䡣


--------------------------------------------------------------------------------

�������� require() �� include()

�������������ļ�״̬���ã���Ϊ����һ���ļ��Ƿ����ڶ��Եײ��ļ�ϵͳ���еĵ��ã��൱�������ļ�״̬������Ԫ��֮һ�� require() �� include() ��������ʽ���֣��������������ڽ����������ű��С�require_once() �� include_once() ��ͬ�����ø������⣬��Ϊ���Dz�����Ҫ��֤�ļ��Ƿ����ڣ�������֮ǰû�а������ڡ�

��ô�����������������÷�ʽ��ʲô����������һЩ�����ӿ�������

•Ϊ���� require() �� include() ����ʹ�þ���·�����⽫ʹ PHP ��������ϣ��������ȷ���ļ�����������Ϊ�����ļ��������� include_path��
•���� include_path �е���Ŀ���ϵ͡����ں���Ϊÿ�� require() �� include() �����ṩ����·����������ͨ���ڴ�������Ӧ�ó����л����������������º����ã��������Dz��������������ļ����ڵ�λ�á�
APC �� Wincache �������ڻ��� PHP ���е��ļ�״̬���������Ļ��ƣ������������з������ļ�ϵͳ���顣������ include �ļ�������Ϊ��̬���DZ���������ʱ����������Ч�����˾����ܳ��������������á�


--------------------------------------------------------------------------------

�Ż��������ݿ�

���ݿ��Ż��ܿ�����Ϊһ��ǰ�ػ��⣬�Ҽ���û�пռ���������ȫ���������������⡣������������Ѱ���Ż��������ݿ����ٶȣ�����Ӧ����ȡһЩ���裬��Ӧ���Գ�����������������

�����ݿ������Լ��Ļ�����

���ݿ���ѯ�������Ա����൱���ң�ͨ���ڶԴ�С���������ݼ�ִ�м򵥵� SELECT ����ʱ�޶��� 100% �� CPU���������� web �����������ݿ����������ھ��õ�һ�����ϵ� CPU ʱ�䣬�����ɽ��������������ٶȡ�����������һ�������ǽ� web �����������ݿ����������ڵ����Ļ����ϣ�ȷ���������ݿ��������������и�ǿ���ģ����ݿ�������ϲ�������ڴ��Ͷ��� CPU����

�������ƺͱ��Ʊ�����

���ݿ����ܵ�������������Դ���ڲ������ݿ����ƺ�ȱʧ������SELECT ����ͨ���������ڵ��� web Ӧ�ó����е�����IJ�ѯ���͡�����Ҳ�������ݿ������������е�����ʱ�IJ�ѯ�����⣬��Щ���͵� SQL �������ʵ������������ݿ����������У����˲鿴����ָʾ����ȡʵ���������ܵļ��ɡ�

•ȷ��ÿ��������һ����������Ϊ���ṩһ��Ĭ��˳���Ϳ��ٷ�ʽ��������������
•ȷ��һ�����е��κ������������Ӽ�¼����һ�����еļ�¼�ļ����������õ��������ơ��������ݿ����Զ�����Щ��ʩ��Լ�����Ա�ֵ����ƥ����һ�����е�һ����¼���������ڰ�����һ���ѡ�
•��ͼ����һ�����е�������һ��������̫���бȽ���һЩ��ʱ���в�ѯ������ɨ��ʱ��Ҫ�������⣬�������в����õĺ������е�һ��������Ҳ��ͨ�� NULL ֵ�ֶ��˷Ѵ��̿ռ䡣�ı��� blob �ȿɱ���С�ֶ�Ҳ�����ˣ����б���С����������Զ���������������������£���Ӧ�����ǽ��������ֳɲ�ͬ�ı����ڼ�¼�������Ͻ�������������
�����ڷ����������еIJ�ѯ

�Ľ����ݿ����ܵ����ѷ����Ƿ������������ݿ�������������ʲô��ѯ��������������Ҫ�೤ʱ�䡣����ÿ�����ݿⶼ�о������ֹ��ܵĹ��ߡ����� MySQL����������������ѯ��־�������������IJ�ѯ��Ҫʹ�������� MySQL �����ļ��н� slow_query_log ����Ϊ 1��Ȼ���� log_output ����Ϊ FILE�������Ǽ�¼���ļ� hostname-slow.log �С����������� long_query_time ��ֵ��ȷ����ѯ�������ж������ű������� “����ѯ”�����뽨�齫����ֵ��������Ϊ 5 �룬����ʱ�������ƽ�������Ϊ 1 �룬����ȡ�����������ݼ���������̽�����ļ������ῴ���������嵥 1 ����ϸ��ѯ��


�嵥 1. MySQL ����ѯ��־
    
/usr/local/mysql/bin/mysqld, Version: 5.1.49-log, started with:
Tcp port: 3306  Unix socket: /tmp/mysql.sock
Time                 Id Command    Argument
# Time: 030207 15:03:33
# User@Host: user[user] @ localhost.localdomain [127.0.0.1]
# Query_time: 13  Lock_time: 0  Rows_sent: 117  Rows_examined: 234
use sugarcrm;
select * from accounts inner join leads on accounts.id = leads.account_id;
 


������Ҫ���ǵĹؼ������� Query_time����ʾ��ѯ��Ҫ��ʱ�䡣��һ��Ҫ���ǵ��� Rows_sent �� Rows_examined ����������Ϊ��Щ��ָ��������������������һ����ѯ�쿴̫���л򷵻�̫���У��ͻᱻ��������д�������Ը���������������д��ѯ�����ڲ�ѯ��ʼ������ EXPLAIN�����᷵�ز�ѯ�ƻ������ǽ����������嵥 2 ��ʾ��


�嵥 2. MySQL EXPLAIN ����


    
mysql> explain select * from accounts inner join leads on accounts.id = leads.account_id;
+----+-------------+----------+--------+--------------------------+---------+---
| id | select_type | table    | type   | possible_keys          
 | key     | key_len | ref                       | rows | Extra |
+----+-------------+----------+--------+--------------------------+---------+--------
|  1 | SIMPLE      | leads    | ALL    | idx_leads_acct_del       | NULL    | NULL   
| NULL                      |  200 |       |
|  1 | SIMPLE      | accounts | eq_ref | PRIMARY,idx_accnt_id_del | PRIMARY | 108   
| sugarcrm.leads.account_id |    1 |       |
+----+-------------+----------+--------+--------------------------+---------+---------
2 rows in set (0.00 sec)
 


MySQL �ֲ�������̽�� EXPLAIN ���������⣨�μ� �ο����ϣ��������ҿ��ǵ�һ����Ҫ������ ‘type’ ��Ϊ ‘ALL’ �ĵط�����Ϊ����Ҫ MySQL ��һ��ȫ��ɨ�裬�Ҳ���Ҫ����ִ�в�ѯ����Щ����������������ʱ���������߲�ѯ�ٶȡ�


--------------------------------------------------------------------------------

����������

������������һ�ڿ����ģ����ݿ��������׳�Ϊ�� web Ӧ�ó������ܵ�����ʹ�㡣����������Ҫ��ѯ�����ݲ������ı���ô�죿�����������£�һ���õ�ѡ�������ڱ��ش洢��Щ��������������ÿ���������ò�ѯ��

����֮ǰ̽�������������뻺�� APC �� Wincache ����ʵ�����������Ĺ��ߣ����������Խ� PHP ����ֱ�Ӵ洢��һ�������ڴ����У����ڿ��ٲ�ѯ���嵥 3 �ṩ�˾���ʾ����


�嵥 3. ʹ�� APC �������ݿ�������ʾ��


    
<?php

function getListOfUsers()
{
    $list = apc_fetch('getListOfUsers');
   
    if ( empty($list) ) {
        $conn = new PDO('mysql:dbname=testdb;host=127.0.0.1', 'dbuser', 'dbpass');
        $sql = 'SELECT id, name FROM users ORDER BY name';
        foreach ($conn->query($sql) as $row) {
            $list[] = $row;
        }
       
        apc_store('getListOfUsers',$list);
    }
   
    return $list;
}
 


���ǽ���һ��ִ�в�ѯ��֮�������ǽ��������͵� getListOfUsers ���µ� APC �����С������↑ʼ��ֱ�����浽�ڣ������ܹ�ֱ�Ӵӻ����л�ȡ�������飬���� SQL ��ѯ��

APC �� Wincache ����һ���û�������Ωһѡ����memcache �� Redis �Dz���Ҫ������ Web ��������ͬ�ķ������������û���������������ѡ�����������������ܺ������ԣ��ر��ǵ����� web Ӧ�ó��������� Web ������������չʱ��


--------------------------------------------------------------------------------

������

�ڱ����У�����̽���˵������� LAMP ���ܵ� 5 �ּ򵥷��������Dz���ͨ������һ�������뻺�����Ż� PHP ����̽���� PHP �����ļ���������̽���������Ż��������ݿ�������ʵ�ֺ������������ơ����ǻ�̽������������һ���û����棨�� APC Ϊ������չʾ���������ݲ������ı�ʱ�����ظ������ݿ����á�

--------------------------------------------------------------------------------

����Դ���� os-5waystunelamp.zip 

ԭ�ģ�http://www.ibm.com/developerworks/cn/opensource/os-5waystunelamp/index.html

  • ת����ע����Դ��ITѧϰ�� ��ַ��http://www.t086.com/ �����������Ƽ�������
  • �ر������� ��վ�������ر�������ֹת�ص�ר�������������¿�������ת�أ���������ע��������ԭʼ���ߡ����°�Ȩ������ԭʼ�������С����ڱ���վת�����µĸ��˺���վ�����DZ�ʾ������л�⡣������վת�ص������а�Ȩ��������ϵ���ǣ����ǻᾡ�����Ը�����
������ѯ Health Check Gulangyu
© 2017 T086ѧϰ�� - T086.com(ԭitlearner.com)
RunTime:6.67ms QueryTime:7