存档
今天无意看手册,发现php对integer型有这样一段描述: The size of an integer is platform-dependent, although a maximum value of about two billion is the usual value (that’s 32 bits signed). 64-bit platforms usually have a maximum value of about 9E18. PHP does not support unsigned integers. Integer size can be determined using the constant PHP_INT_SIZE, and maximum value using the constant [...]
今天编译memcache扩展,由于从别的机器拷过来的,忘记make clean,出了点插曲,备忘下 cd memcache-2.2.5 /usr/local/bin/phpize make clean ./configure –enable-memcache –with-php-config=/usr/local/bin/php-config –with-zlib-dir make make install 编译后会生成memcache.so 例如我的是: /usr/local/lib/php/extensions/no-debug-non-zts-20060613/ 修改php.ini 将extension_dir改为以上目录或将生成的so文件移至extension目录 添加行 extension=memcache.so
PHP处理XML类文档主要有两个模块,一般简单点用SimpleXML,不过他只能作遍历、取值、取属性等操作,而不能进行删除修改节点的操作。使用libxml的DOMDocument功能比较强大,不过也比较麻烦。今天就遇见一问题,折腾很久~ 有XML格式如下: <foo xmlns="test"> <bar attr=’a'></bar> <bar attr=’b'></bar> <bar attr=’c'></bar> </foo> 开始尝试解析 <?php $dom = new DOMDocument; $dom->loadXML($xmls);//xmls变量为以上XML的字符串内容 $messages = $dom->getElementsByTagName(’bar’); foreach($messages as $k=>$message){ if(!is_object($message) || ($message->getAttribute(’attr’) == ‘a’)){ continue;//属性attr 为a的保留 } $message->parentNode->removeChild($message); } echo $dom->saveXML(); //原以为删除了attr属性不为a的bar节点,可是却混淆了!后来尝试了replaceChild等,也不是太理想,而且还麻烦 //最后在PHP官方发现也有人提了此问题,并且人家找到办法绕过了此BUG You can’t remove DOMNodes from a DOMNodeList as you’re iterating over them in a foreach loop. For [...]
对站长来说,丢失数据又没得恢复绝对是恶梦……因此,想到将linux下的数据库和www目录自动备份,因为有win主机闲置,那就存它那了。闲话少说,现在开工:
首先给win主机安装cwrsync(基于cgwin和rsync的同步软件)
…………
memcache是一个高效快速的,以内存存取的高速缓存,其保存方式通过“键”=>“值”的方式,对key进行hash存储,因而查询速度快,避免硬盘的反复擦写,也正如此,断电或重启就得重新为它“灌”内容了。 准备工作: 1.先安装libevent,因为memcached是依赖它的 2.memcached下载与安装 # ./memcached -d -m 50 -p 11211 -u root 参数说明 -m 指定使用多少兆的缓存空间;-p 指定要监听的端口; -u 指定以哪个用户来运行 3.启动./memcached -p 11211 如果报如下错 error while loading shared libraries: libevent-1.4.so.2: cannot open shared object file: No such file or directory 那么,注册一下libevent扩展 # vi /etc/ld.so.conf.d/libevent-i386.conf 内容为你编译生成的libevent库的路径,默认为/usr/local/lib 运行 # ldconfig 好了,这样memcachd就装好了,接下来安装php支持,可以通过phpize或静态编译方式 ,我是通过后者 下载最新版pecl memcache包解压至phpdir/ext #rm configure #buildconf –force [...]
我们通常使用fsockopen打开一个$fp来发送http头,请求后用feof判断是否读完来获取服务器响应的内容。 但是这使用feof时要特别注意一点,php手册上关于feof有这样一个说明: Warning 如果服务器没有关闭由 fsockopen() 所打开的连接,feof() 会一直等待直到超时而返回 TRUE。默认的超时限制是 60 秒,可以使用 stream_set_timeout() 来改变这个值。 也就是一个打开的socket连接,没有在读完后关闭,feof会一直返回true直到超时 看如下代码: $url = "/N_StockQuote.aspx?StockCode=002024&StockMarket=2"; $fp = fsockopen(’hqdigi.eastmoney.com’,80,$errno,$errstr,10); if(!$fp){ die("Network error or invalid stock code\r\n"); }elseif($error){ die("$error:$errstr\r\n"); }else{ $request = "GET $url HTTP/1.1\r\n"; $request .= "Host: hqdigi.eastmoney.com\r\n"; $request .= "Pragma: no-cache\r\n"; $request .= "Cache-Control: no-cache\r\n\r\n"; fwrite($fp,$request);//发送请求头 while(!feof($fp)){ $tmp .= fgets($fp,1024);//获取服务器返回信息 } } 运行这代码就有问题了,while进入死循环,直到超时 [...]
平时对MYSQL函数使用较少,想使用时确不记得函数名及参数用法。
现对比PHP整理下,便于记忆……
本页将不断更新,直至完善
今天一同事问我,他用了Content-Type=text/xml型,提交了一个xml文档内容给了php server,要怎么获得这个POST数据。 这把我愣住了,以前确实没写过这样的POST,赶紧查手册,发现有$HTTP_RAW_POST_DATA 这一项。对此的解释是:The RAW / uninterpreted HTTP POST information can be accessed with: $GLOBALS['HTTP_RAW_POST_DATA'] This is useful in cases where the post Content-Type is not something PHP understands (such as text/xml). 意思是,由于PHP默认只识别application/x-www.form-urlencoded标准的数据类型,因此,对型如text/xml的内容无法解析为$_POST数组,故保留原型,交给$HTTP_RAW_POST_DAT来接收。
获取用户IP地址的几个属性的区别(HTTP_X_FORWARDED_FOR,HTTP_X_FORWARDED,HTTP_VIA,REMOTE_ADDR)
最新评论