海运的博客

NoSQL持久化存储之Berkeley DB

发布时间:January 2, 2014 // 分类:NoSQL // No Comments

安装Berkeley DB:

wget http://download.oracle.com/berkeley-db/db-6.0.20.tar.gz
tar zxvf db-6.0.20.tar.gz 
cd db-6.0.20/build_unix/
../dist/configure --prefix=/usr/local/berkeleydb --enable-cxx
make && make install

安装PHP扩展:

cd ../lang/php_db4/
phpize
./configure --with-db4=/usr/local/berkeleydb/
make && make install
echo 'extension=db4.so' >> /etc/php.ini

简单使用:

<?php
   $db = new Db4();
   $db->open(null, "/var/tmp/db4", "test"); 
   $db->put('key', 'value');
   $db->get('key');
?>

http://www.oracle.com/technetwork/products/berkeleydb/downloads/index-082944.html

PHP函数pfsockopen建立Keep-Alive连接

发布时间:January 1, 2014 // 分类:PHP // No Comments

使用Keep-Alive可减少建立TCP连接的开销,pfsockopen在脚本执行期间可重用socket实现Keep-Alive。

<?php
   function httpget($host)   
   {   
      $conn = pfsockopen($host,80,$errno, $errstr, 30);   
      if (!$conn)    
      {   
         echo "$errstr ($errno)<br />\n";   
         return;   
      }   

      $header = "HEAD / HTTP/1.1\r\n";   
      $header.= "Host: {$host}\r\n";   
      $header.= "Connection: Keep-Alive\r\n\r\n";    

      fwrite($conn,$header);   

      /*
      while (!feof($conn)) {   
         $resp .= fgets($conn);   
      }
      */

      //fclose($conn); //关闭连接后再连接keepalive失效
      return $resp;   
   }   
   $host = 'www.haiyun.me';   
   $count = 2;   

   for ($i = 0; $i < $count; $i++) {   
      echo httpget($host);
      sleep(10);
   }   
?>

Tcpdump分析,1-3行第一次建立TCP连接,第8行建立第二次连接跳过TCP三次握手。

20:27:17.016435 IP 1.2.3.4.49022 > 162.211.225.71.80: Flags [S], seq 2231661196, win 5840, options [mss 1400,sackOK,TS val 9961058 ecr 0,nop,wscale 6], length 0
20:27:17.016531 IP 162.211.225.71.80 > 1.2.3.4.49022: Flags [S.], seq 2734092091, ack 2231661197, win 14480, options [mss 1460,sackOK,TS val 1880475065 ecr 9961058,nop,wscale 7], length 0
20:27:17.342653 IP 1.2.3.4.49022 > 162.211.225.71.80: Flags [.], ack 1, win 92, options [nop,nop,TS val 9961139 ecr 1880475065], length 0
20:27:17.345695 IP 1.2.3.4.49022 > 162.211.225.71.80: Flags [P.], seq 1:65, ack 1, win 92, options [nop,nop,TS val 9961139 ecr 1880475065], length 64
20:27:17.345716 IP 162.211.225.71.80 > 1.2.3.4.49022: Flags [.], ack 65, win 114, options [nop,nop,TS val 1880475394 ecr 9961139], length 0
20:27:17.876911 IP 162.211.225.71.80 > 1.2.3.4.49022: Flags [P.], seq 1:427, ack 65, win 114, options [nop,nop,TS val 1880475925 ecr 9961139], length 426
20:27:18.202503 IP 1.2.3.4.49022 > 162.211.225.71.80: Flags [.], ack 427, win 108, options [nop,nop,TS val 9961355 ecr 1880475925], length 0
20:27:27.346477 IP 1.2.3.4.49022 > 162.211.225.71.80: Flags [P.], seq 65:129, ack 427, win 108, options [nop,nop,TS val 9963640 ecr 1880475925], length 64
20:27:27.346508 IP 162.211.225.71.80 > 1.2.3.4.49022: Flags [.], ack 129, win 114, options [nop,nop,TS val 1880485395 ecr 9963640], length 0
20:27:27.838571 IP 162.211.225.71.80 > 1.2.3.4.49022: Flags [P.], seq 427:853, ack 129, win 114, options [nop,nop,TS val 1880485887 ecr 9963640], length 426
20:27:28.165367 IP 1.2.3.4.49022 > 162.211.225.71.80: Flags [.], ack 853, win 125, options [nop,nop,TS val 9963845 ecr 1880485887], length 0
20:27:37.346030 IP 1.2.3.4.49022 > 162.211.225.71.80: Flags [R.], seq 129, ack 853, win 125, options [nop,nop,TS val 9966140 ecr 1880485887], length 0
分类
最新文章
最近回复
  • 海运: 恩山有很多。
  • swsend: 大佬可以分享一下固件吗,谢谢。
  • Jimmy: 方法一 nghtp3步骤需要改成如下才能编译成功: git clone https://git...
  • 海运: 地址格式和udpxy一样,udpxy和msd_lite能用这个就能用。
  • 1: 怎么用 编译后的程序在家里路由器内任意一台设备上运行就可以吗?比如笔记本电脑 m参数是笔记本的...
  • 孤狼: ups_status_set: seems that UPS [BK650M2-CH] is ...
  • 孤狼: 擦。。。。apcupsd会失联 nut在冲到到100的时候会ONBATT进入关机状态,我想想办...
  • 海运: 网络,找到相应的url编辑重发请求,firefox有此功能,其它未知。
  • knetxp: 用浏览器F12网络拦截或监听后编辑重发请求,修改url中的set为set_super,将POS...
  • Albert: 啊啊啊啊啊啊啊啊啊 我太激动了,终于好了英文区搜索了半天,翻遍了 pve 论坛没找到好方法,博...