php之异步执行

近来做一网站因为需要在提交一个表单的时候发邮件给N多人,但用户反映每次提交表单总是要等好久,所以用户体验不好。

一般情况下,处理这样的表单提交的流程可以分解为:
用户提交表单→ 将表单内容写入数据库→发邮件给收件人→提示表单提交完成。
而往往在发邮件的过程中会消耗掉一大部分时间,造成用户体验不好。

这里可以用到php的异步执行方法:在提交表单后将内容写入到数据库,然后把发邮件的任务交给了另一个用来发信的php程序处理,接着提示用户已经提交表单完成咯。。。

异步执行的过程就变成了:
用户提交表单→ 将表单内容写入数据库→提示表单提交完成。
             |- 发邮件给收件人

php本不具备多线程执行能力,所以就用异步执行来模拟多线程解决问题,也就是利用php的fsockopen()、fputs()两个函数来重新提交一个url的请求,所以不需要等待它的返回。代码如:

<?php
//getpost.php
function sendmail() {
    $fp=fsockopen('localhost',80,&$errno,&$errstr,10);
	$para = "mail=".$_POST['mail'];
    $header = "POST /sendmail.php HTTP/1.0 \r\n";
	$header .= "Content-Type: application/x-www-form-urlencoded \r\n";
	$header .= "Content-Length:".strlen($para). "\r\n";
    fputs($fp,$header.$para); //请求sendmail程序处理
    fclose($fp);
} 
/*
//处理表单并写入数据库中。
*/
sendmail();
echo "表单提交完成咯";

?>

另一个程序:

<?php
//sendmail.php
set_time_limit(0); //设置脚本超时时间为不超时
/*
// 处理发邮件代码
*/
?>

[zz]俗话说。。。俗话又说。。。

from: 冷笑话

1、俗话说:兔子不吃窝边草;可俗话又说:近水楼台先得月!
2、俗话说:宰相肚里能撑船;可俗话又说:有仇不报非君子!
3、俗话说:人不犯我,我不犯人;可俗话又说:先下手为强,后下手遭殃!
4、俗话说:男子汉大丈夫,宁死不屈;可俗话又说:男子汉大丈夫,能屈能伸!
5、俗话说:打狗还得看主人;可俗话又说:杀鸡给猴看!
6、俗话说:知无不言,言无不尽;可俗话又说:交浅勿言深,沉默是金!
7、俗话说:车到山前必有路;可俗话又说:不撞南墙不回头!
8、俗话说:条条大路通罗马;可俗话又说:一条道走到黑!
9、俗话说:礼轻情谊重;可俗话又说:礼多人不怪!
10、俗话说:人多力量大;可俗话又说:人多嘴杂!
继续阅读[zz]俗话说。。。俗话又说。。。

囍游记

女儿国国王的MSN签名:长老姓唐,甜到忧伤。

玉兔的博客:亲们说,如果爱,请深爱。这一刻,我泪流满面。虽然我不止一次的对自己说过:“玉兔精,你一定要幸福哦!”可,他是风一样的男子,粉碎了我优雅的尊严,让我如烟花般寂寞……留下来好么?唐长老,西天会有女妖替我爱你么?

唐僧的短信:女王,我三藏,我们已到狮驼国,想你,吻你。勿回短信,徒弟在,不方便。

八戒:猴哥儿,当初你就拿这戒指跟紫霞仙子求婚的?你丫真逗!半克拉钻都没有,换谁都不鸟你了!当初嫦娥就这么臊我说:甭跟我说爱不爱,先看钻戒多大块!唉,现在的仙女多现实啊,哎我告你,就这票仙女儿,你要拿一钻石板砖把她拍死,她都不带喊救命的.. 继续阅读囍游记

广告一个网站

亦歌(http://www.1g1g.com/)

最开始看到这个是在cnbeta上的一篇文章,在那里介绍了几个在线的音乐分享网站。。。
所以,接触亦歌这个网站有几天了,觉得挺不错的,所以拿出来广告一下。
至少很符合我这样一边工作/上网,一边喜欢听点音乐的人。在它的帮助页面上说:“如果您有一边在电脑上工作、娱乐一边听听音乐的习惯,亦歌希望成为您首选的音乐播放器。”

–EOL–

编译chromium

以下内容从CB看到。也就是这里

编译chromium
基础环境准备
Subversion >= 1.4(提示:假如你使用的是tarball(压缩包格式),很难关注代码的改动,你需要1.5版本,我们以后会修复它的)(译者:Subversion是一种比CVS高级的版本控制软件)

pkg-config >= 0.20 (译者:pkg-config是开发用的库配置工具)

Python >= 2.4 (译者:Python编程语言,此处指Python环境,工具)

Perl > 5.x

gcc/g++ >= 4.2

bison >= 2.3 (译者:GNU bison语法分析转换工具?)

flex >= 2.5.34

gperf >= 3.0.3

libnss3-dev >= 3.12

ubuntu里用命令:  
sudo apt-get install subversion pkg-config python perl g++ bison flex gperf libnss3-dev
即可完成

然后是下载构建工具:
svn co http://src.chromium.org/svn/trunk/depot_tools/linux depot_tools

再配置构建工具:
$ export LANG=C
$ ./depot_tools/gclient config http://src.chromium.org/svn/trunk/src
会得到 release文件夹
$ ./depot_tools/gclient sync
得到src,这个过程很长,,,我到现在还没同步完,据说整个构建环境+chromium的源码,总共占用1.2G的空间。。。。。

完了之后,编译子集程序
third_party/scons/scons.py Hammer
结束后,可执行程序放在Hammer目录里。

建议:还是看看源码结构吧,大公司做的东西就是细致,虽然就几个牛人开发的,但对我们来说绝对是一个无法想象的浩大工程。

Google Chrome 源码下载地址 (Google Chrome Source Code Download)

  1. Google Chrome 源码 SVN 地址http://src.chromium.org/svn。包含有 Chrome、Gears、Webkit、GCC 等源码以及编译依赖工具。Chrome 浏览器项目的源码,位于目录 http://src.chromium.org/svn/trunk/src/chrome/
  2. Google Chrome 源码 Web 浏览地址http://src.chromium.org/viewvc/
  3. Google Chrome 所使用的 JavaScript V8 的源码下载地址http://code.google.com/p/v8/

看着这么大个,我就吓死了,本来还想试试的。。。

Ubuntu 9.04叫Jaunty Jackalope

Ubuntu创始人Mark Shuttleworth周一宣布了Ubuntu 9.04的代号,Jaunty Jackalope(得意的鹿角兔)。

Ubuntu发布的周期为6个月,9.04将于明年4月推出。Shuttleworth相信Ubuntu将能与Windows和Mac OS X展开竞争,他预计在接下来的一年中,这款开源Linux发行版将安装在1百万台机器上。在邮件列表中,他表示“兔子武士将是我们走进新一年的护身符,我们有理由期待Ubuntu将安装到数百万台机器上,有理由期待消费者的软件体验将比得上传统的软件供应商——微软和苹果。栏杆很高,但我们会抓住机会跳过它”。

传说中的得意洋洋的Jackalope就是这家伙:
Jackalope

      据Ubuntu创始人Mark Shuttleworth透露,Ubuntu
9.04将重点缩短系统启动时间,并更好地集成网络应用程序。他还表示,2009年会有几百万计算设备安装Ubuntu,这给他们带来了不小的压力,迫使
开发团队更好地改善系统质量,从各方面都不能输给微软Windows和苹果Mac OS。

Ubuntu历代开发代号一览:

  • 4.10 Warty Warthog
  • 5.04 Hoary Hedgehog
  • 5.10 Breezy Badger
  • 6.06 Dapper Drake
  • 6.10 Edgy Eft
  • 7.04 Feisty Fawn
  • 7.10 Gutsy Gibbon
  • 8.04 Hardy Heron
  • 8.10 Intrepid Ibex
  • 9.04 Jaunty Jackalope

僅作筆記

目錄:
前言
1.三個命令
2.Linux下J2SDK的配置

前言:
最近此人又開始抽瘋了,不幹正事,成天搗鼓一些毫無用處的東西。
一個字形容:賤;
兩個字形容:犯賤;
三個字形容:……。

1.三個命令

mkfontscale, mkfontdir, fc-cache -fv
mkfontscale和mkfontdir兩條命令,為X生成fonts.scale和fonts.dir兩個字體列表文件。
fc-cache -fv則是更新fontconfig的cache。
參考:http://wiki.ubuntu.org.cn/index.php?title=如何使用XP字体进行中文美化&variant=zh-cn
另:要使在字體列表文件中加入GBK支持,可以在mkfontscale時加入 -a gbk-0參數。

這仨命令是就是記不住,每要用到一次便GOOGLE一次。于是摘錄于此。
而實際上,這仨命令無非是幾個單詞的組合體。
其實Hardy的字體已經非常令人滿意了,可有些人就是抽瘋,要加入Windows的一些字體,于是…
小插曲:關于Ubuntu版本號,從我開始接觸的5.10開始。Breezy Badger(5.10),Dapper Drake(6.06),Edgy Eft(6.10),Feisty Fawn(7.04),Gutsy Gibbon(7.10),Hardy Heron(8.04),Intrepid Ibex(8.10)。或許9.04中會是一個以J開頭的動物單詞組合?

2.Linux下J2SDK的配置。
a.下載軟件包,從Sun公司網站:http://java.sun.com/j2se/1.5.0/download.jsp
b.給文件加上可執行權限,并運行之。

clare@CUbuntu:~/java$ chmod +x jdk-6u6-linux-i586.bin
clare@CUbuntu:~/java$ ./jdk-6u6-linux-i586.bin

完成之後,會生成一個“jdk1.6.0_06”文件夾,在當前目錄中。
c.將此目錄cp到想要放置此程式的目錄中,這裏我放到了/usr/java/下;
d.配置環境變量:
環境變量的配置有三種方法:修改/etc/profile,修改用戶的.bashrc文件以及直接在shell中修改。
我用了修改.bashrc的方法:

clare@CUbuntu:~$ cat .bashrc
export JAVA_HOME=/usr/java/jdk1.6.0_06
export CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar
export PATH=$PATH:$JAVA_HOME/bin

e.測試OK。
另,在運行JAVA API的時候,沒能顯示中文字來。比如這個程序.

//TestFrame.java

import java.awt.*;
import javax.swing.*;

public class TestFrame extends JFrame {

    public TestFrame() {
        this.getContentPane().add(new JLabel("你好,JAVA!"));
        this.setSize(200,100);
        this.setTitle("你好,Java!");
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setVisible(true);
    }

    public static void main(String[] args) {
        TestFrame frame = new TestFrame();
    }
}

這個方法解決了。