2010. 10. 13.
[PHP] how to install memcached on Windows XP
2010. 10. 12.
[PHP] 정규식으로 한글 영어 숫자 추출하기
$str = 'abc!@하나둘셋#123';
echo $str;
preg_match_all($pattern, $str, $match);
$str = implode('', $match[0]);
echo $str;
==================
abc!@하나둘셋#123
abc하나둘셋123
한글과 영어 숫자를 제외한 나머지문자는 무시하게 된다.
2010. 10. 11.
[MySQL] lower_case_table_names 세팅하기
2010. 10. 3.
[MySQL]skip-name-resolve
skip-external-locking
skip-host-cache
skip-locking
skip-name-resolve
[MySQL]Too Many Connection Error
show variables like '%connect%';
show variables like '%thread%';
show status like '%thread%';
show status like '%connect%';
======================================================================
show status like 'Threads_created';
show status like 'Connections';
Cache Miss Rate(%) = Threads_created / Connections * 100
show status like 'Aborted_connects';
show status like 'Connections';
Connection Miss Rate(%) = Aborted_connects / Connections * 100
show status like 'Threads_connected';
show variables like 'max_connections';
Connection Usage(%) = Threads_connected / max_connections * 100
==========================================================================
2010. 9. 19.
mysql 접속자 수 늘리기
set-variable=max_connections=200 ---> 다음 한 줄을 추가한다.
# mysqld_safe -O max_connection=200 &
2010. 8. 29.
[MySQL] Slave_Sql_Running = No
Master-Slave Replication 환경에서 Master에만 있는 테이블을 변경한다던가, Slave에서 테이블을 DROP하는 작업을 하는 경우 Slave의 Replication이 중단된다.
이 경우 SHOW SLAVE STATUS\G 명령어를 수행하면
Slave_Sql_Running = No
라는 부분을 발견한다. 이런 경우 error를 유발한 쿼리를 skip 해줘야 한다.
mysql> SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1;
mysql> SLAVE START;
SQL_SLAVE_SKIP_COUNTER : Slave를 작동한 후 Master로부터 읽어온 쿼리 중 skip할 쿼리 수
[MySQL] Master-Slave Replication
가. Master 서버 설정
1. Slave 서버에서 접근할 수 있도록 권한을 준다.
mysql> GRANT REPLICATION SLAVE ON *.* TO 'ID'@'IP' IDENTIFIED BY 'PASSWORD';
ID : Master MySQL의 user id로 Slave의 MySQL에서 접근함
IP : Slave 서버의 IP
PASSWORD : Slave의 MySQL에서 쓰는 id의 password
2. Master 역할을 할 수 있는 권한 부여
[mysqld]
server-id = 1
binlog-do-db = 'DB_NAME'
binlog-ignore-db = mysql
binlog-ignore-db = information_schema
log-bin = mysql-bin
server-id : 동기화 구성에 참여한 각각의 MySQL들을 구분짓기 위한 UNIQUE ID로서 중복되면 안된다.
binlog-do-db : 실제 동기화 하려는 대상 DB의 이름. DB마다 한 라인씩 추가하면 된다.
binlog-ignore-db : 동기화 하지 않을 DB의 이름. DB마다 한 라인씩 추가하면 된다.
log-bin : 아마도 mysql의 log file 이름.
나. Slave 서버 설정
1. Slave 역할을 할 수 있는 권한 부여
[mysqld]
server-id = 2
master-host = 'Master IP'
master-user = 'ID'
master-password = 'PASSWORD'
master-port = 3306
log-bin = mysql-bin
server-id : Master에서의 역할과 동일하게 UNIQUE ID
master-host : Master 서버의 IP
master-user : Master 서버의 MySQL에 생성했던 Replication 계정 ID
master-password : Replication 계정 ID의 비밀번호
master-port : Master 서버의 MySQL 원격 접속 포트번호 (기본: 3306)
log-bin : Master에서의 역할과 동일하게 아마도 log file 이름
다. 동기화 작동
1. Master 서버 재시작 후 MySQL에 접속
2. Master 서버 동작 확인
********************** 1. row **********************
File : mysql-bin.000003
Position : 98
Binlog_Do_DB : test
Binlog_Ignore_DB : mysql, information_schema
1 row in set (0.00 sec)
mysql>
3. Slave 서버 재시작 후 MySQL에 접속
4. Slave 서버 동작 확인
mysql> SHOW SLAVE STATUS\G
********************** 1. row **********************
Slave_IO_State : Waiting for master to send event (정상)
Master_Host : IP
Master_User : ID
Master_Port : 3306
Connection_Retry : 60
Master_Log_File : mysql-bin.000003
Read_Master_Log_Pos : 98
.
.
Slave_IO_Running : Yes (정상)
Slave_SQL_Running : Yes (정상)
.
.
1 row in set (0.00 sec)
mysql>
Read_Master_Log_Pos : MASTER STATUS의 Position과 동일하다.
Slave_IO_State, Slave_IO_Running, Slave_SQL_Running 의 상태가 위와 같다면 정상
2010. 8. 17.
[PHP] MongoDB 사용하기
[MongoDB] 사용자추가 스키마생성 DB삭제
2010. 8. 16.
[MongoDB] APM에서 시작하기
$m = new Mongo();
?>
2010. 8. 15.
[MySQL] index 추가, 삭제, 확인하기
2010. 7. 19.
FirePHP 사용법
$firephp = FirePHP::getInstance(true);
$firephp->log($variable);
FirePHP 사용법.
post raw data
2010. 7. 1.
PHP 이미지 crop
PHP 파일업로드
2010. 4. 22.
[Code Igniter] layout 적용하기
1. /application/libraries/Layout.php 에 다음 소스를 저장한다.
<?php2. /application/controllers/intro.php (임의로 만든 파일) 의 생성자에 다음 코드를 넣는다.
if (!defined('BASEPATH')) exit('No direct script access allowed');
class Layout
{
var $obj;
var $layout;
function Layout($layout = "layout_main")
{
$this->obj =& get_instance();
$this->layout = $layout;
}
function setLayout($layout)
{
$this->layout = $layout;
}
function view($view, $data=null, $return=false)
{
$loadedData = array();
$loadedData['content_for_layout'] = $this->obj->load->view($view,$data,true);
if($return)
{
$output = $this->obj->load->view($this->layout, $loadedData, true);
return $output;
}
else
{
$this->obj->load->view($this->layout, $loadedData, false);
}
}
}
?
<?php3. /application/views/layouts/default.php 에 다음 코드를 넣는다.
class Intro extends Controller {
function __construct()
{
parent::Controller();
$this->load->library('layout', 'layouts/default');
$this->layout->setLayout('layouts/default');
}
function index()
{
$this->layout->view('layouts/default');
}
}
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ko" lang="ko" dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>CI 레이아웃</title>
<style type="text/css">
.header {
width: 760px;
height: 50px;
border: 1px solid #CCCCCC;
}
.navigation {
float: left;
}
.navigation li {
float: left;
margin-right: 10px;
list-style: none;
cursor: pointer;
}
</style>
</head>
<body>
<div class="header">
<ul class="navigation">
<li id="home">Home</li>
<li id="send">Send</li>
</ul>
</div>
</body>
</html>2010. 3. 25.
PHP 시간함수( strtotime, time(), date() )
2010. 3. 11.
mysql password 변경
# ps -ef | grep mysqld
2. 실행중인 mysql 종료
# killall mysqld
3. grant-table 미사용모드로 mysql 시작 (mysql 데몬 실행)
# cd /usr/local/mysql/bin
# ./mysqld_safe --skip-grant-tables &
4. mysql 접속
# ./mysql -u root mysql
5. password 갱신
# update user set password=password('123') where user = 'root';
2009. 12. 10.
MySQL에서 인덱스 체크하기 : EXPLAIN
MySQL에서 인덱스를 타는지 체크하는 방법은 EXPLAIN을 사용하는 것이다.
phpMyAdmin에 접속을 하고, SQL 탭으로 이동한다.
EXPLAIN SELECT * FROM `member` WHERE `id` = 1;
다음과 같이 쿼리문 앞에 EXPLAIN을 붙여주면 된다.
다음 그림은 쿼리문에서 Primary Key로 인덱스를 탄 경우이다.
(possible_keys, key를 눈여겨 봐야 한다.)

다음 그림은 쿼리문에서 Primary Key와 Foreign Key로 인덱스를 탄 경우이다.
(possible_keys, key를 눈여겨 봐야 한다.)

memcached-1.2.5-win32-bin.zip