我们在开发测试时,有时web服务器会绑定一个域名,但是因为dns是无法解析的,我们需要设置host文件去访问。 但是,如果我们是需要通过curl访问的话,无法访问该url的host主机。所以,需要通过指定host的方式来访问,具体访问方式如下: 如果是linux下的curl命令: 如果使用php的curl的话,使用curl_setopt设置一下CURLOPT_HTTPHEADER即可。 请参考以下函数使用:

阅读全文

通过php的header函数,来指定为文件下载流,可以让文件正常下载,但是,文件名确很让人烦恼,文件名有中文时,如果页面编码为utf8,当文件名也为utf8时,在chrome下正常,但是在360se或者IE下,就成了乱码了;如果把文件名的编码设置为GBK,在IE下输出时候的文件名正常了,但是在chrome下,文件名又乱码了,这个太纠结了。 抓包的话,能看到如下的数据流,仔细看看,感觉跟发送邮件时的数据流很相似,于是想想是不是也采用跟邮件似的文件流形式,来避免出现乱码。 HTTP/1.1 200 OK<br /> Date: Mon, 08 Oct 2012 17:32:12 GMT<br /> Content-Length: 204<br /> Content-Disposition: attachment; filename=%E6%B5%8B%E8%AF%95.txt<br /> Cache-Control: public<br /> Content-Type: application/octet-stream<br /> Connection: Close 所以做法就是把文件名进行编码,根据RFC 1738 ,把中文编码,再放到数据流里,输出的时候就会正常了。在php中,具体的做法就是这样了,贡献一个我自己的文件下载头信息。把这个放在前边,再在后边echo输出你希望下载的内容即可了。

阅读全文

cygwin 添加php扩展模块

以添加openssl模块为例子 进入源码目录 cd php-5.2.13/ext/openssl #运行phpize生成configure /usr/local/php/bin/phpize #编译,指定php-config,注意这里的php-config,不是php.ini ./configure –with-php-config=/usr/local/php/bin/php-config #上面可以添加–enable-openssl,也可以不用添加 #编译安装 make;make install #生成一个目录来存放扩展的模块 mkdir /usr/local/php/etc/php/ext #复制openssl.so到模块目录 cp /usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/openssl.so /usr/local/php/etc/ext/ #编辑php.ini文件,指定PHP到哪个目录读模块 vi /usr/local/php/etc/php.ini extension_dir=”/usr/local/php/etc/ext” #Load模块 extension=openssl.so #保存退出 再用/usr/local/php/bin/php -m|grep openssl查看是否有openssl.so 备注: 如果在运行phpize时报错:Cannot find autoconf. Please check your autoconf installation: `以添加openssl模块为例子 进入源码目录 cd php-5.2.13/ext/openssl #运行phpize生成configure /usr/local/php/bin/phpize #编译,指定php-config,注意这里的php-config,不是php.ini ./configure –with-php-config=/usr/local/php/bin/php-config #上面可以添加–enable-openssl,也可以不用添加 #编译安装 make;make install #生成一个目录来存放扩展的模块 mkdir /usr/local/php/etc/php/ext #复制openssl.so到模块目录 cp /usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/openssl.so /usr/local/php/etc/ext/ #编辑php.ini文件,指定PHP到哪个目录读模块 vi /usr/local/php/etc/php.ini extension_dir=”/usr/local/php/etc/ext” #Load模块 extension=openssl.so #保存退出 再用/usr/local/php/bin/php -m|grep openssl查看是否有openssl.so 备注:

阅读全文

8月22,一人到我的站来留言,邀请我去参加一个关于他们联盟的关键字的百度的SEO,我拒绝了。。

然后,从8月23日开始,我的站从百度搜索来的量急剧下降。。。。几乎为0了。。。

擦嘞,,,这是巧合么。。。

阅读全文

目前有一个需求,其它20台机器上每隔5分钟向另外一台服务器提交一些文件的MD5信息,这台服务器每隔几分钟跑一个脚本,把这些信息进行对比,如果有不一致的信息需要报警。

现在的问题就是,系统自带的crontab定时只能每几分钟跑一次,这样每次脚本跑的时候都是在某分的第一秒。

但是,如果在服务器提交信息的时候去进行比对信息,就可能发生异常了,所以需要把服务器上检查的脚本推迟一些运行,不要也是在1秒时候跑。

crontab不支持,但是脚本支持延迟啊,所以,解决办法很简单。在检查脚本里开头 sleep 10s 即可啦。这样这个脚本在1秒时开始执行,但是sleep一会后才继续后边检查,所以,不会发生冲突了~~

sleep用法Tips

sleep 1 睡眠1秒<br /> sleep 1s 睡眠1秒<br /> sleep 1m 睡眠1分<br /> sleep 1h 睡眠1小时<br /> echo `expr $RANDOM % 60` 睡眠随机0-60秒

阅读全文

在使用curl上传POST一段数据时,被提示413 Request Entity Too Large,应该是nginx限制了上传数据的大小。

解决方法就是

打开nginx主配置文件nginx.conf,一般在/usr/local/nginx/conf/nginx.conf这个位置,找到http{}段,修改或者添加

client_max_body_size 2m;

然后重启nginx,

即可。

要是以php运行的话,这个大小client_max_body_size要和php.ini中的如下值的最大值差不多或者稍大,这样就不会因为提交数据大小不一致出现错误。

post_max_size = 2M

upload_max_filesize = 2M

阅读全文

作者的图片

DigDeeply

Technology Stack: Golang/PHP/Openresty, and so on…

Web Development Engineer

Beijing China