admin 的blog
祝你愉快
由 admin 于 周一, 2008-06-30 13:26 提交。天空海阔是无尽美梦
可惜只得一个破天空
寻求人间仅有的希望
骤觉得到了又已失去了
不懂欢笑像留下缺陷
哥哥可否知道我的心
常常埋怨仿似不长大
是你给予我留我一点真
默默悼念默默愤怒埋怨
一生充满了斗志永不倦
怎可终止
他的生命是真理
他的生命没扭转
但愿在你的远方
可听得到我这歌
常欠缺了你在旁
陪伴上路多么不安
但愿用这一阙歌
来冲洗心中我苦楚
来叫喊我对你未忘
含泪说声
祝你愉快
看天空可变改
Tomcat 6支持的Comet
由 admin 于 周三, 2007-11-14 23:21 提交。今天在测试中无意中看到Tomcat 6的新特性Comet,使用Comet技术可以轻松实现一个Pushlet的功能,让我看了着实兴奋不已,而其官方网站还给出了一个Messenger的例子。
public class ChatServlet extends HttpServlet implements CometProcessor { protected ArrayList<HttpServletResponse> connections = new ArrayList<HttpServletResponse>(); protected MessageSender messageSender = null; public void init() throws ServletException { messageSender = new MessageSender(); Thread messageSenderThread = messageSenderThread.setDaemon(true); messageSenderThread.start(); } public void destroy() { connections.clear(); messageSender.stop(); messageSender = null; } /** * Process the given Comet event. * * @param event The Comet event that will be processed * @throws IOException * @throws ServletException */ public void event(CometEvent event) HttpServletRequest request = event.getHttpServletRequest(); HttpServletResponse response = event.getHttpServletResponse(); if (event.getEventType() == CometEvent.EventType.BEGIN) { log("Begin for session: " + request.getSession(true).getId()); writer.println("<!doctype html public \"-//w3c//dtd html 4.0 transitional//en\">"); writer.println("<head><title>JSP Chat</title></head><body bgcolor=\"#FFFFFF\">"); writer.flush(); synchronized(connections) { connections.add(response); } } else if (event.getEventType() == CometEvent.EventType.ERROR) { log("Error for session: " + request.getSession(true).getId()); synchronized(connections) { connections.remove(response); } event.close(); } else if (event.getEventType() == CometEvent.EventType.END) { log("End for session: " + request.getSession(true).getId()); synchronized(connections) { connections.remove(response); } writer.println("</body></html>"); event.close(); } else if (event.getEventType() == CometEvent.EventType.READ) { byte[] buf = new byte[512]; do { int n = is.read(buf); //can throw an IOException if (n > 0) { + " for session: " + request.getSession(true).getId()); } else if (n < 0) { error(event, request, response); return; } } while (is.available() > 0); } } protected boolean running = true; protected ArrayList<String> messages = new ArrayList<String>(); public MessageSender() { } public void stop() { running = false; } /** * Add message for sending. */ synchronized (messages) { messages.add("[" + user + "]: " + message); messages.notify(); } } public void run() { while (running) { if (messages.size() == 0) { try { synchronized (messages) { messages.wait(); } // Ignore } } synchronized (connections) { synchronized (messages) { messages.clear(); } // Send any pending message on all the open connections for (int i = 0; i < connections.size(); i++) { try { for (int j = 0; j < pendingMessages.length; j++) { writer.println(pendingMessages[j] + "<br>"); } writer.flush(); log("IOExeption sending message", e); } } } } } } }
64位RedHat AS5安装PHP JSON模块
由 admin 于 周三, 2007-11-14 23:02 提交。最近安装了一台RedHat AS5 64bit的服务器,但是在安装完后返现默认安装的PHP中居然没有装载JSON模块。在PHP的官方网站上看到可以使用PECL安装PHP的模块。
#pecl install json
安装编译很顺利但是到后面的模块测试时出错,错误如下:
Fatal error: Allowed memory size of 8388608 bytes exhausted (tried to allocate 143 bytes) in /usr/share/pear/PEAR/PackageFile/v2.php on line 1058
在此执行pecl install json系统提示已经安装过json模块,使用php -m系统给出如下错误:
PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib64/php/modules/json' - /usr/lib64/php/modules/json: cannot open shared object file: No such file or directory in Unknown on line 0
于是查看/etc/php.ini文件,返现extension=json,将其改为extension=json.so,运行
#php -m
发现json安装正常,不知道是不是PHPJSON大意将extension=json.so写成了extension=json
最新评论
5 天 3 小时 前
6 天 23 小时 前
6 天 23 小时 前
1 周 1 天 前
1 周 1 天 前
4 周 4 天 前
1 年 11 周 前
1 年 11 周 前
1 年 49 周 前
1 年 51 周 前