Archive for 2 月, 2014

扫描后PDF文件合并的办法

星期二, 25 2 月, 2014

在实际应用中经常需要把一些合同、财务报表等材料扫描并合并到现有文档中,通常都批量扫描成黑白的PDF文件(别人的做法),然后使用Adobe Acrobat Pro来把这些PDF文件按具定顺序合并保存成新的PDF文件,我们碰到的情况是合并过程正常,但保存完成后打开文件提示出错,然后内容变成空白。

解决办法是把这些PDF另存成JPG文件(注:扫描的时候直接输出成JPG文件不就少了这一步吗?),然后再使用前面的办法合并成新的PDF文件,合并的时候选择这些JPG文件而不是PDF文件。

如果在已有的PDF文件合并新的页面并放到指定位置,可以先用前面的方法把JPG文件合并进该PDF文件,这时新添加的JPG文件生成新的PDF页面放在文件尾。在打开的新PDF文件中进入页面预览模式,即每个页面显示一个缩略图,此时在缩略图区域找到需要移动的页面和移动到的目标位置,选中多个待移动页面,按住鼠标左键在缩略图区域移动鼠标到目标位置放开即可,保存成新的文件或替换原文件即可完成。

php-fpm.conf两个至关重要的参数

星期二, 25 2 月, 2014

摘自:http://www.cnblogs.com/xiaochaohuashengmi/archive/2011/03/15/1984969.html

最近我在LocVPS上部署的PHP经常报“502 Bad Gateway”错误,启用并查看php-fpm.log可以看到max_children暴掉了,我默认的时候是5个,request_terminate_timeout没启用。网上找到下面这个解决方法,由于我的VPS是Xen 512M 双核的,服务器上还部署了其它应用,因此我把request_terminate_timeout设成480(8分钟稍大于nginx服务器配置里的5分钟),max_children设成15,但愿问题能解决。下面是转载正文:

nginx.conf的http域规定了PHP-CGI的连接、发送和读取的时间,300秒足够用了,因此服务器很少出现504 Gateway Time-out这个错误。最关键的是php-fpm.conf的设置,这个会直接导致502 Bad Gateway和504 Gateway Time-out。

下面我们来仔细分析一下php-fpm.conf几个重要的参数:
php-fpm.conf有两个至关重要的参数,一个是“max_children”,另一个是“request_terminate_timeout”,我的两个设置的值一个是“40”,一个是“900”,但是这个值不是通用的,而是需要自己计算的。

(更多…)

让Twip支持UberTwitter老版本

星期一, 17 2 月, 2014

去年5月份前@yegle更新的Twip版本在O模式里也调用了$this->uri_fixer()函数,因此用“修正对API1.1的支持”增加$replacement数组的替换项就可以支持UberTwitter v0.971了,因为新的API不再支持replies.json和mentions.json。

今天使用“get clone https://github.com/twip/twip”取到最新的源码,UberTwitter里仍用O模式就发现做了$replacement数组的替换还是刷不了@消息,仔细查看代码才发现O模式的override_mode()函数里不再调用$this->uri_fixer()函数了,只好自己修改代码了,在第189行处插入以下代码:
[php]
$replacement = array(
‘mentions.json’ => ‘mentions_timeline.json’,
‘replies.json’ => ‘mentions_timeline.json’,
);
$forwarded_request_uri = str_replace(array_keys($replacement), array_values($replacement), $this->forwarded_request_uri);
[/php]

并把其后的两处$this->forwarded_request_uri变量替换成$forwarded_request_uri即可支持UberTwitter:
[php]
$filterName = Twip::encode_uri($forwarded_request_uri);
$parts = parse_url($forwarded_request_uri);
[/php]

更新的twip.php文件参见本地:twip.php.txt,替换时把后缀.txt去掉。

另外提一下在Nginx配置文件里的重定向处理方法,假设twip部署在http://youdomain.com/twip目录,除了config.php的配置成“define(‘BASE_URL’,’http://youdomain.com/twip/’);”外,还需要修改ngix.conf,添加下面几行:
[text]
location /twip {
if (!-e $request_filename) {
rewrite ^/twip/(.*)$ /twip/index.php last;
}
}
[/text]

如果目录有变化,请对应修改上的twip部分。

原VPS不给力又给换了一个

星期六, 15 2 月, 2014

之前在用还没到期的VPS是Virpus厂家的,目前还有两个512M的Xen VPS到4月份左右才到期,其中一个年付的两个IP已经被墙,已经丢弃,另一个是半年付,也是双IP的,但访问速度实在不啥的。

目前在用的是LocVPS的512M Xen VPS,双核,一个IP,10GB的SSD硬盘,使用起来速度比较Virpus的好很多,当然价钱也差不多贵一倍,用6折永久优惠码(40OFF)月付是37.2元RMB,在可接受范围内。

目前已经迁移完毕。经过多次有VPS迁移,经常出现在线下载的源程序包因升级或别的原因不存在了,所以这次修改了脚本改从本地取源程序包,并把用过正常的源程序包打包起来放在需要的地方,以方便下次安装。网页脚本则使用Dropbox进行备份

LocVPS的推荐链接:http://my.locvps.com/page.aspx?c=referral&u=17581,或在注册时填上我的编号17581,推荐注册有5%的提成。

PHP强制刷新图片的方法

星期三, 12 2 月, 2014

在编写PHP自动处理脚本时可能会遇到需要输入验证码的情况,比如我在写淘宝店铺助手时就要求登录时必须输入验证码。解决办法是增加一个专用登录页面,在登录时如果遇到需要输入验证码的情况就通过curl使用同一个cookie在同一session下从目标服务器取到验证码保存成本地图片,然后在专用登录界面显示该验证码图片让用户输入对应的验证码,再提交完成登录,登录结果自动保存在cookie里,之后使用同一cookie在同一session里使用就不再需要登录。

为了方便管理,每次登录时都保存成images/checkcode.jpg,在专用登录界面如果使用常规方法<img src=”images/checkcode.jpg”>显示验证码图片,浏览器会优先从缓存读取图片来显示,这样用户看到的是旧的验证码图片,解决办法是在jpg文件后加随时间变化的参数,比如“日时分秒”数值:
[php]
$content = getContent($checkcode_url);
file_put_contents(‘images/checkcode.jpg’, $content);
echo ‘<form action=”login.php” method=”post”><img src=”images/checkcode.jpg?’ . date(‘dHis’) . ‘” width=”100″ height=”30″ border=”1″> <input name=”checkcode” type=”text” size=”8″> <input type=”submit” name=”Submit” value=”提交”></form>’;
[/php]

配置使用cookie的脚本:
define(‘COOKIE_FILE’, ‘tbcookie’);
curl_setopt($ch, CURLOPT_COOKIEJAR, realpath(COOKIE_FILE));
curl_setopt($ch, CURLOPT_COOKIEFILE, realpath(COOKIE_FILE));