php���ַ���IP��ַ��ѯ�е�Ӧ��
���ݿ����Ŵ洢��ʮ����IP��¼����¼�����£�
+----------+----------+------------+---------+---------+--------+--------+
| ip_begin | ip_end | country_id | prov_id | city_id | isp_id | netbar |
+----------+----------+------------+---------+---------+--------+--------+
| 0 | 16777215 | 2 | 0 | 0 | 0 | 0 |
| 16777216 | 33554431 | 2 | 0 | 0 | 0 | 0 |
| 33554432 | 50331647 | 2 | 0 | 0 | 0 | 0 |
| 50331648 | 67108863 | 3 | 0 | 0 | 0 | 0 |
| 67108864 | 67829759 | 3 | 0 | 0 | 0 | 0 |
+----------+----------+------------+---------+---------+--------+--------+
������������ѯ��Ҫ�õ�����SQL��
<?php
$sql = 'SELECT * FROM i_m_ip WHERE ip_begin <= $client_ip AND ip_end >= $client_ip';
?>
���������ļ�����Ȼ�ò�����������ʹ�õ���MySQL��ѯЧ��Ҳ�������ܴﵽÿ��500�����ϣ������˺ܶಢ���Ż�������ƽ����ѯЧ��Ҳֻ��ÿ��200�����ң�ʵ����ͷʹ��һ��ʼ��Ҳ���뵽��������IP���ļ���������������һֱ���㷨�еִ���Ҳ��Ϊ���ַ����ѣ����Ծ�û�г���ʹ�ã�ֱ������û�а취�ˣ�������ʵ���˶��ַ���IP��ַ������
�������ϱ����Կ���IP���Ǵ�0��4294967295��һ��������ֵ��������ֵҪ�Dz洢�����м���G�����ݣ�����û�취ʹ������Ҳû�취��ϣ��������ʹ��PHP����Щ����תΪ�����ƴ洢�����������ݿ��ļ��������Կ���IP��ֹ����Ϊһ��4�ֽڵij����ͣ������Ĺ���ID��ʡ��ID�ȣ�����ʹ��2���ֽڵĶ��������洢���ܹ�һ�����ݾ���18���ֽڣ��ܹ�31�������ݣ�������Ҳ��5M�����ӡ�����IP�����ɴ������£�
<?php
/*
IP�ļ���ʽ��
3741319168 3758096383 182 0 0 0 0
3758096384 3774873599 3 0 0 0 0
3774873600 4026531839 182 0 0 0 0
4026531840 4278190079 182 0 0 0 0
4294967040 4294967295 312 0 0 0 0
*/
set_time_limit(0);
$handle = fopen('./ip.txt', 'rb');
$fp = fopen("./ip.dat", 'ab');
if ($handle) {
while (!feof($handle)) {
$buffer = fgets($handle);
$buffer = trim($buffer);
$buffer = explode("\t", $buffer);
foreach ($buffer as $key => $value) {
$buffer[$key] = (float) trim($value);
}
$str = pack('L', $buffer[0]);
$str .= pack('L', $buffer[1]);
$str .= pack('S', $buffer[2]);
$str .= pack('S', $buffer[3]);
$str .= pack('S', $buffer[4]);
$str .= pack('S', $buffer[5]);
$str .= pack('S', $buffer[6]);
fwrite($fp, $str);
}
}
?>
��������IP�Ͱ���˳��ÿ18�ֽ�һ����λ�����ˣ����Ժ�����ʹ�ö��ַ���������IP��Ϣ��
function getip($ip, $fp) {
fseek($fp, 0);
$begin = 0;
$end = filesize('./ip.dat');
$begin_ip = implode('', unpack('L', fread($fp, 4)));
fseek($fp, $end - 14);
$end_ip = implode('', unpack('L', fread($fp, 4)));
$begin_ip = sprintf('%u', $begin_ip);
$end_ip = sprintf('%u', $end_ip);
do {
if ($end - $begin <= 18) {
fseek($fp, $begin + 8);
$info = array();
$info[0] = implode('', unpack('S', fread($fp, 2)));
$info[1] = implode('', unpack('S', fread($fp, 2)));
$info[2] = implode('', unpack('S', fread($fp, 2)));
$info[3] = implode('', unpack('S', fread($fp, 2)));
$info[4] = implode('', unpack('S', fread($fp, 2)));
return $info;
}
$middle_seek = ceil((($end - $begin) / 18) / 2) * 18 + $begin;
fseek($fp, $middle_seek);
$middle_ip = implode('', unpack('L', fread($fp, 4)));
$middle_ip = sprintf('%u', $middle_ip);
if ($ip >= $middle_ip) {
$begin = $middle_seek;
} else {
$end = $middle_seek;
}
} while (true);
}
��������$fpΪ����ip.dat���ļ�������������ѭ������������д�ں������棬����ÿ�μ�����Ҫ����һ���ļ���30W�����ݶ��ַ�����Ҳֻ��Ҫѭ��7��(2^7)���Ҽ����ҵ�ȷ��IP��Ϣ��֮���������뽫ip.dat�����ڴ��мӿ������ٶȣ��������֣��ַ�����λ������Ч�ʣ��������ļ�ָ����ƫ�ƶ�λ������һ���������ģ����Ի��Ƿ���ʹ���ڴ�������IP�⡣
��������ʵ�֣�ʹIP����Ч�������˽��ٱ���ֻ��һ���Ķ��ַ���Ӧ�ã��Ӵ��㷨��WEBӦ���в���Ҫ�Ĺ���״����ˡ���ʵҪʵ���������һ������˽�������һ��ʼ��������������һ��������ʽ��IP�⣬Ȼ����Discuz��IP��ѯ���������������������ϰ��ң������������ҵ�����ʵ����ѧϰ����ʱ�������˲�����
- ת����ע����Դ��ITѧϰ�� ��ַ��http://www.t086.com/ �����������Ƽ�������
- �ر������� ��վ�������ر�������ֹת�ص�ר�������������¿�������ת�أ���������ע��������ԭʼ���ߡ����°�Ȩ������ԭʼ�������С����ڱ���վת�����µĸ��˺���վ�����DZ�ʾ������л�⡣������վת�ص������а�Ȩ��������ϵ���ǣ����ǻᾡ�����Ը�����
- �������е���ɫ
- ������ϵ��Ц�� (ʷ����ȫ��
- �������ж�IP��ַ��A��B���C��
- ���ٶ�ͳ��URL��hm������utm�����Ķ�Ӧ��ϵ
- ��Google���������ŵ���ͨv4.0
- ��Linux��ʹ��host��dig��nslookup��ѯDNS
- ��ƻ������MACbook Air���ݼ���ȫ
- �����Լ���VPS�Google��������
- ��С�ڴ�VPS֮Nginx+PHP-fpm�߸����Ż���ѹ�����Է���
- ���������ԡ���װ Windows XP ����ϵͳ��ͼ��ȫ����