Hot For Coding
Nginx反向代理

Nginx反向代理非常强大,先来看看一个图

                  +--- host --------> node.js on localhost:8080
                  |
users --> nginx --|--- host/blog ---> node.js on localhost:8181
                  |
                  +--- host/mail ---> node.js on localhost:8282

用户访问Nginx,再由Nginx转发给后端node.js服务,而后端的node.js服务可以无限水平扩展来解决后端流量过大的问题

...

READ ALL

PHP清理Memcached过期缓存内容

Memcached缓存可以很大的提升动态页面性能,特别是对于实时性要求不高的内容,但通常缓存都是要求又周期性的,否则新的内容就无法再次被缓存。所以通常缓存的内容都有一个时效性以便再次进行更新,这个看不同的业务场景分不同类型的数据进行设置时效性,有的每分钟,有的每一个小时,有的甚至上月

我们经常会使用Memcached的存储过期功能,而实际上在过期后,Memcached并不能马上回收过期内容,这样会很快存满至配置限制,根据不同配置,Memcached会采用LRU算法删除缓存内容或使用时删除过期内容,而有时Memcached这样的释放内存的机制并不能满足所有应用,故我们在PHP基础上实现了统一删除过期内容的功能,适用于定时清理。

...

READ ALL

CentOS查看内存信息和频率

内存条数

Linux查看内存的插槽数,已经使用多少插槽。每条内存多大,已使用内存多大可以使用以下命令

[root@test01 ~]# dmidecode|grep -P -A5 "Memory\s+Device"|grep Size|grep -v Range
        Size: 4096 MB

上面的结果中,只看到一个4096 MB表示我只插了一条内存,大小是4G

[root@test02 ~]# dmidecode|grep -P -A5 "Memory\s+Device"|grep Size|grep -v Range
        Size: 4096 MB
        Size: 4096 MB

...

READ ALL

PHP中memcached()函数使用

PHP中提供两个函数可以访问memcached,一个是旧的memcache()和一个新的memcached(),两个函数都差不多,后者据说比前者有一些优化

环境

在使用memcached()函数之前,需要确认一下有没有配好环境

phpinfo.php

<?php
// Nicholas Lee www.qttc.net
echo phpinfo();
?>

假如你能在页面中看见memcached support关键字就表示你可以使用了,如果没看见那需要先把环境配置好

使用

使用特别简单,它是一个类,直接实例化既可以使用

...

READ ALL

PHP中strtotime()函数使用

这个函数的作用是传入一定文本格式的参数,返回一个时间戳,可以使用它来获取一个时间戳,比如获取前一天,前一个月,前一年等等。

这个函数的使用场景非常多,比如查询一个月内的数据,查询一天内的数据。

语法

int strtotime ( string $time [, int $now = time() ] )

参数

例子

// Nicholas Lee www.qttc.net

echo strtotime("now"), "\n";
echo strtotime("10 September 2000"), "\n";
echo strtotime("+1 day"), "\n";
echo strtotime("+1 week"), "\n";
echo strtotime("+1 week 2 days 4 hours 2 seconds"), "\n";
echo strtotime("next Thursday"), "\n";
echo strtotime("last Monday"), "\n";

...

READ ALL

PHP中file_get_contents函数不能使用的解决方法

有些主机服务商把PHP的allow_url_fopen选项是关闭了,就是没法直接使用file_get_contents来获取远程web页面的内容。那就是可以使用另外一个函数curl

下面是file_get_contents和curl两个函数同样功能的不同写法

file_contents

// Nicholas Lee www.qttc.net

$file_contents = file_get_contents("https://www.qttc.net/");
echo $file_contents;

换成curl函数的使用示例

...

READ ALL

HTML5新特性

WebSocket

HTML5开始支持WebSocket,在这之前只能通过长连接或者flash控件去做通讯,WebSocket使用的业务场景最多应该是聊天室了。

格式

var Socket = new WebSocket(url, [protocal] );

// Nicholas Lee www.qttc.net

if ("WebSocket" in window)
{
  alert("WebSocket is supported by your Browser!");
  
  // Let us open a web socket
  var ws = new WebSocket("ws://localhost:9998/echo");

  ws.onopen = function()
  {
    // Web Socket is connected, send data using send()
    ws.send("Message to send");
    alert("Message is sent...");
  };

  ws.onmessage = function (evt) 
  { 
    var received_msg = evt.data;
    alert("Message is received...");
  };

  ws.onclose = function()
  { 
    // websocket is closed.
    alert("Connection is closed..."); 
  };

  window.onbeforeunload = function(event) {
    socket.close();
  };
}

else
{
  // The browser doesn't support WebSocket
  alert("WebSocket NOT supported by your Browser!");
}

...

READ ALL

MySQL常用日期函数

DAYOFWEEK(date)

返回日期date是星期几(1=星期天,2=星期一,……7=星期六,ODBC标准)

mysql> select DAYOFWEEK('2012-03-20');
-> 3

WEEKDAY(date)

返回日期date是星期几(0=星期一,1=星期二,……6= 星期天)。

mysql> select WEEKDAY("2012-03-20 22:23:00");
-> 1

mysql> select WEEKDAY('2012-03-20');
-> 1

DAYOFMONTH(date)

返回date是一月中的第几日(在1到31范围内)

...

READ ALL

PHP中explode()与implode()函数的使用

explode()

explode()是字符串分割函数

格式

array explode ( string $delimiter , string $string [, int $limit = PHP_INT_MAX ] )

返回一个全是字符串的数组

// Nicholas Lee www.qttc.net

$str = "Hello world. here is qttc.";
print_r (explode(" ",$str));

implode()

implode()是连接字符串函数

格式

string implode ( string $glue , array $pieces )

...

READ ALL

PHP使用flush实现长连接

每次我们访问PHP脚本的时候,都是当所有的PHP脚本执行完成后,我们才得到返回结果。如果我们需要一个脚本持续的运行,那么我们就要通过php长连接的方式,来达到运行目的。

每个PHP脚本都限制了执行时间,所以我们需要通过set_time_limit来设置一个脚本的执行时间为无限长。然后使用flush()ob_flush()来清除服务器缓冲区,随时输出脚本的返回值。

Code

// Nicholas Lee www.qttc.net

header("Content-Type: text/plain");
set_time_limit(0);
 
$infoString = "Hello World" . "\n";
while( isset($infoString) )
{
  echo $infoString;
  flush();
  ob_flush();
  sleep(5);
}

...

READ ALL