平时在PHP操作HTML时间吃力不讨好的事情, 虽然有“The DOMComment class”之类的神迹,但远不如javasript操作html来得快。 所以懒人们高出一个 phpQuery, 像JQuery一样操作HTML.
<?php
include ‘phpQuery-onefile.php’;
$doc = phpQuery::newDocumentHTML($html);
echo $doc["head > title"]->text();
?>
注意: 看了源码,第二个参数可以指定编码。(utf8、gbk….) $html 必须是utf-8编码的,否则中文会出现乱码;
phpQuery: http://code.google.com/p/phpquery/
python版 pyQuery: http://pypi.python.org/pypi/pyquery
通过来源rewrite url,可以使得通过A网站,和通过B网站 过来访问内容的是不同的, 但是url还是那个; 是不是很帅!nginx轻松搞定。
if ($http_referer ~* mifunny.info){
rewrite ^/7474748\.html$ /html/ld/index.html break;
}
当别人把垃圾域名转向至你的服务器时, 如果不采取措施,那么几乎是傻等着被K。(国内机房一般都要求网站主关闭空主机头,防止未备案的域名指向过来造成麻烦。) 在Nginx的配置文件 nginx.cnf 最后加上下面代码:
server {
listen 80 default;
return 500;
}
以此类推, 禁止通过IP访问,可以写成:
server {
listen 80 default;
server_name _;
return 500;
}
自然周嘛,顾名思义,星期一是一周的第一天, 在MySQL中, 可以使用YEARWEEK函数获得:
SELECT SQL_NO_CACHE yearweek( from_unixtime( unix_timestamp(’2010-06-16 19:13:01′)-86400 ) ) AS week;
结果是 201024
PHP中就稍稍有些麻烦了:
1 <?php
2
3 $dateStr = ’2010-06-16 19:13:01‘;
4 echo getYearWeek($dateStr);
5
6 //获取自然周
7 function getYearWeek($dateStr){
8 $unixtime = strtotime($dateStr);
9 $ym = strftime(‘%Y%m‘, $unixtime);
10 $w = strftime(‘%V‘, $unixtime);
11
12 $y = substr($ym, 0, 4);
13 $m = substr($ym, 4, 2);
14 if( 6>(int)$m && 50<$w ){
15 $y = (int)$y - 1;
16 }
17
18 return $y.$w;
19 }
输出 201024 ; 如果需要计算自然周的第一天和最后一天,不妨参考taobao QA团队的文章: php 取得某个自然周的第一天和最后一天的方法
2010年06月16日标签: YEARWEEK,自然周 分类: MySQL,PHP
前段时间碰到一个很头疼的问题,就是大于12位的数字在PHP中,会自动转成科学计数法表示。 比如 1234567891234 显示为 1.23456789123E+12 , 最后只能在计算出大数之后,立即用 sprintf(‘%1.0f’, $number) 来格式化。
奇怪的是,在我的Arch Linux上却不会自动转换, 只出现在生产机上, 郁闷ing. 上网搜了下, 有不少和我遇到相同问题的:
[PHP] 大數運算問題 @ BJ の 狗窩 :: 痞客邦 PIXNET ::
PHP大整数输出成科学计数法问题
解决方法: 在PHP配置文件 php.ini 中, 有一行 precision = 14 , 一般*nix上是14,windows上是12; 不过以防万一, 以后编码 但凡遇到12位以上的数字,都用sprintf格式化.
PHP CGI 有3种形式:
- 最强悍的FPM, 功能最强大, 只要配置php-fpm.conf即可;
fpm主页: http://php-fpm.org/
- 使用 spawn-fcgi, 启动命令: env – PHP_FCGI_CHILDREN=3 PHP_FCGI_MAX_REQUESTS=1000 spawn-fcgi -a 127.0.0.1 -p 9000 -u www-data -g www-data -f php-cgi -P /var/run/spawn-fcgi.pid
使用时, 把www-data替换成自己的用户名和群组名;
参数含义如下:
-f <fcgiapp> 指定调用FastCGI的进程的执行程序位置,根据系统上所装的PHP的情况具体设置
-a <addr> 绑定到地址addr
-p <port> 绑定到端口port
-s <path> 绑定到unix socket的路径path
-C <childs> 指定产生的FastCGI的进程数,默认为5(仅用于PHP)
-P <path> 指定产生的进程的PID文件路径
-u和-g FastCGI使用什么身份(-u 用户 -g 用户组)运行,Ubuntu下可以使用www-data,其他的根据情况配置,如nobody、apache等
然后我们可以将这行代码加入到/etc/rc.local文件底部,这样系统启动的时候也可以同时启动PHP的FastCGI进程。
- 直接启动php-cgi, 使用命令: php-cgi -b 127.0.0.1:9000
不过这时php-cgi是使用当前用户身份, 执行session等相关操作会出错, 如果web用户(如ubuntu下的www-data)是可以登录的, 则使用命令: su www-data -l -c “php-cgi -b 127.0.0.1:9000″
如果www-data不能登录(bash位/bin/false), 那么直接修改用户权限,
sudo chown www-data:www-data which php-cgi
sudo chmod u+s which php-cgi
BTW: 近段时间看ZF手册,开头有这么一句: 对于只包含有 PHP 代码的文件,结束标志(”?>”)是不允许存在的,PHP自身不需要(”?>”), 这样做, 可以防止它的末尾的被意外地注入相应。 晕倒~~ 我这会儿才知道有这茬
最近每每翻墙,总想起张小花《史上第一混乱》中那句:“阶级啊,这就是阶级啊!万恶的封建主他们骄奢淫逸,他们鱼肉百姓,他们骑在人民头上拉屎撒尿——这个有点恶心就不说了。”呃~~ 是广播剧版的, 看文字没那么强效果。
好了,下面列出本人使用过、使用着的5中翻墙代理:
- GAppProxy: 主页 http://code.google.com/p/gappproxy/ , 安装使用FAQ里讲得很明白, 不过部分GAE网址被封, 有些不好使了。
- Toonel: java的一个小玩意, 但是速度很慢。
- Nginx透明代理: 前文说过了 使用 Nginx 搭建正向代理(透明代理)
- SSH proxy: 这个不错,可惜godaddy空间不支持; (命令 ssh -D 8001 user@hostname )
- APJP: 主页 http://code.google.com/p/apjp/ , 服务端PHP, 客户端JAVA, 有国外空间的朋友可以选择。
几天前邮购了张宴牛大的《实战Nginx》, 发现nginx作代理实在是 easy! 下面是正向代理(透明代理)的配置内容:
….
user www-data;
worker_processes 2;
… …
server
{
listen 8181;
location / {
resolver 8.8.8.8; #DNS最好换一个
proxy_pass http://$http_host$request_uri;
}
access_log /var/log/nginx/proxy_access.log
}
.. …
一周前, 吃过饭撑得慌, 路过ubuntu论坛, 手痒, 买了个VPS. 现今得空, 配置一番。
系统选择ubuntu-9.10-x86_64, 主要是太懒, 不愿意编译, 喜欢捡现成软件用.
…
1. 更新系统
root# apt-get update
root# apt-get upgrade
root# aptitude wget zip
### 好久不用ub, 逛论坛看到 aptitude 能更好解决依赖性, 姑且用着.
继续阅读 >
2010年04月04日标签: ubuntu,vps,配置 分类: 大佛Linux
最新评论