分类目录归档:Php

httpd添加php支持

在现有nginx+php的情况下想让apache支持php yum install httpd yum安装的http在/etc/httpd下(httpd -V可以查看相关信息) 都知道要改 httpd.conf 添加类似几行 LoadModule php5_module xxxphp.so AddType application/x-httpd-php .php AddType application/x-httpd-php-source .phps 从哪里去编译得到php.so呢。我试着想从源码包找到相关的编译。因不太熟。不知道怎么编译。还可能php带参数自动处理时有一系列的批处理。 不像单独的一个软件configure make make install的。只是记得以前装php+apache环境时带了参数 –with-apxs2这样的参数。然后就没管过配置httpd的http.conf 。 查了一下相关的资料。原来apxs跟phpize差不多,php编译的时候带上会自动生成httpd用的php so文件并修改httpd.conf 让其支持php。 原来apxs在httpd-devel 里面。(以后yum装东西最好 yum install xx* 把东西都装全了,免得缺胳膊少腿的。就像nginx安装时提示缺少pcre库时,yum安装了pcre ,nginx configure的时候还是会报缺少pcre,如果再安装了pcre-devel就通过了。) yum install httpd-devel 有了apxs … 继续阅读

发表在 Php | 标签为 , | 留下评论

linux下php环境安装

之前在vps上装了好多次,每次碰到不同的问题,现在记录一下。 1.nginx ./configure碰到少库 yum install pcre 不够还有pcre-devel这样的。建议直接yum install pcre* 2.mysql useradd -M -s /sbin/nologin mysql mkdir /data/mysql chown -R mysql:mysql /data/mysql cd mysql-5.6.4-m7 yum install gcc gcc-c++ CC=gcc CXX=gcc CXXFLAGS=”-O3 -felide-constructors -fno-exceptions -fno-rtti” cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \ -DWITH_MYSQLD_LDFLAGS=-all-static \ -DWITH_DEBUG=OFF … 继续阅读

发表在 Linux, Mysql, Php | 标签为 | 留下评论

一致性hash算法 – consistent hashing

因redis有文件存储,挂了不会像mc那样完全都没有了,全站的memcache都换成了用redis。但是mc add多台server采用一致性hash算法,可以减少某台机器挂了造成大量key找错机器找不到值的影响。换成了redis也想用保留这个算法。 详细说明: http://blog.csdn.net/sparkliang/article/details/5279393 “3.5.1 移除 cache 考虑假设 cache B 挂掉了,根据上面讲到的映射方法,这时受影响的将仅是那些沿 cache B 逆时针遍历直到下一个 cache ( cache C )之间的对象,也即是本来映射到 cache B 上的那些对象。”  应该为 cache A php版实现方式: http://zwzweb.googlecode.com/files/Consistent%20Hashing.php 线上采用的是 C语言版本的实现打成so扩展了。mc类在new对象时通过调用其中的方法addTagerts 添加redis机器节点代号,lookup获取分配到的机器节点。实现尽可能的key值均匀分布。 consistent hashing 是一种 hash 算法,简单的说,在移除 / 添加一个 cache 时,它能够尽可能小的改变已存在 key 映射关系。

发表在 Php | 标签为 , | 留下评论

PHP的线程安全与非线程安全版本的区别

转自: http://blog.csdn.net/bl1988530/article/details/8186104 Windows版的PHP从版本5.2.1开始有Thread Safe(线程安全)和None Thread Safe(NTS,非线程安全)之分,这两者不同在于何处?到底应该用哪种?这里做一个简单的介绍。 从2000年10月20日发布的第一个Windows版的PHP3.0.17开始的都是线程安全的版本,这是由于与Linux/Unix系统是采用多进程的工作方式不同的是Windows系统是采用多线程的工作方式。如果在IIS下以CGI方式运行PHP会非常慢,这是由于CGI模式是建立在多进程的基础之上的,而非多线程。 一般我们会把PHP配置成以ISAPI的方式来运行,ISAPI是多线程的方式,这样就快多了。但存在一个问题,很多常用的PHP扩展是以Linux/Unix的多进程思想来开发的,这些扩展在ISAPI的方式运行时就会出错搞垮IIS。因此在IIS下CGI模式才是PHP运行的最安全方式,但CGI模式对于每个HTTP请求都需要重新加载和卸载整个PHP环境,其消耗是巨大的。 为了兼顾IIS下PHP的效率和安全,微软给出了FastCGI的解决方案。FastCGI可以让PHP的进程重 复利用而不是每一个新的请求就重开一个进程。同时FastCGI也可以允许几个进程同时执行。这样既解决 了CGI进程模式消耗太大的问题,又利用上了CGI进程模式不存在线程安全问题的优势。 因此,如果是使用ISAPI的方式来运行PHP就必须用Thread Safe(线程安全)的版本;而用 FastCGI模式运行PHP的话就没有必要用线程安全检查了,用None Thread Safe(NTS,非线程安全) 的版本能够更好的提高效率。 PHP官方http://php.net/上关于widows的版本有4个:VC9 x86 Non Thread Safe,VC9 x86 Thread Safe,VC6 x86 Non Thread Safe,VC6 x86 Thread Safe;那么有什么区别呢? 1.支持的服务器不同 VC9版本是针对IIS服务器的版本,没有对APACHE的支持,而VC6版本对IIS和apache都提供了支持 VC6 是什么? VC6 就是 legacy Visual … 继续阅读

发表在 Php | 标签为 , | 留下评论

CodeIgniter相关配置分析

core/controller 49行 $this->load->initlialize() 包含autoload设置的 加载类 1.active_group 导入database.php 配置文件 active_group =’default’ 如果使用load->database(‘xx’) 指定了key active_group 就为key session类 87行 连接默认数据库  $this->CI->load->database(); active_group default 就会连接default指定的数据库 如果配置文件把active_group 改成ask_ext 则会连接ask_ext 错误。  2.active_record active_record=false CI_DB_driver::insert_string() active_record=true CI_DB_active_record::insert()  也有父类的CI_DB_driver::insert_string() 都调用CI_DB_mysql_driver::_insert()获取最终的sql DB.php 120行  定义类CI_DB 继承CI_DB_active_record 或 CI_DB_driver,CI_DB_active_record 本身继承了CI_DB_driver,mysql_driver.php (CI_DB_mysql_driver)继承 … 继续阅读

发表在 Php | 标签为 , , , | 留下评论

空格符和换行符的处理

回车换行(键盘按enter键) 和 空格(键盘按空格键)  在textarea编辑显示与页面显示的问题:   回车换行符: textarea:识别 /r/n ,不识别<br /> 但是页面显示不识别/r/n 。按说应该替换成<br />达到效果。 处理办法: 表单提交时用nl2br  或者用str_replace 替换/r/n成<br /> 保存到数据库。(strig_tags($content) 把表单填写的标签都干掉,只让数据库存放程序替换产生的<br />,或者允许p标签吧,貌似他们喜欢用这个分段啥的。strig_tags($content,’<p>’)) textarea编辑显示时:替换<br />成 /r/n (你不替换,运营的看见里面都是<br />会很蛋疼的,还是会找你改。) 页面显示:直接显示。   空格符:“ ”和&nbsp; 产生背景:运营说在后台编辑框敲了一堆空格” “ 前台没一点缩进。。。 经测试:textarea能识别” “ 和 &nbsp; 页面显示只识别&nbsp;(firefox 不知道其他浏览器会不会不同) 处理办法: … 继续阅读

发表在 Php | 标签为 | 留下评论

使用php apc扩展实现文件上传进度条

参考:http://www.ibm.com/developerworks/cn/opensource/os-php-v525/ 今天出错在未拷贝  apc.rfc1867 = On 从别的地方拷贝了一堆关于apc.xx的配置就是没有这个,后来发现了一会就好了。 php_apc.dll 在 http://downloads.php.net/pierre/php_apc-20110109-5.3-vc9-x86.zip  php.ini 中添加(注意:wamp加载的ini文件可能在apache/bin 下面的那个) extension=php_apc.dll [apc]apc.rfc1867 = Onapc.max_file_size = 1000M 其他的也设置大些,便于本地测试,不然一会就传完了看不到效果。 upload_max_filesize = 1000M post_max_size = 1000M 内存如果不够 也改改 memory_limit = 256M 下载提供的例子。 progress.html只是简单说明用js不断改变span的宽度实现效果。也可删除。 getprogress2.php可删除。  修改target.php指定的上传目录 修改progress.php 引用的js 改成引用本地jquery.js   过程: progress.php  … 继续阅读

发表在 Php | 标签为 , , | 留下评论

队列执行效率

一个队列memcacheq存储待发送的短信,计划任务每分钟一次取100条下发,如果一分钟内未执行完毕,下次又取100条下发,如此,内存占用升高,这也是小事,好像也费不了多少内存。但是对调用移动接口下发短信的接口造成压力,一般下发接口可能做了请求频率限制,这样导致大量短信发送失败,还得想办法再插入到队列重发。改善方法:用memcache设置一个标识,开始下发时表示有下发任务,下个请求来了取该标识是否为有任务状态,没有就设置标识为有任务,然后从队列取。就是有锁直接退出,无锁就加锁干活,干完活解锁。恩,用memcache存临时性标识确实挺好的,不能只局限于想着单独的存一坨结果集什么的。

发表在 Php | 标签为 , | 留下评论

隐藏phpmyadmin操作图标的文字描述

今天装了个新的wamp,自带的phpmyadmin比较高,显示表的列表时显示:    编辑  快速编辑  复制  删除 整体占的比较长,想把汉字描述弄掉,因为图标本身的title可以说明其作用。phpmyadmin 的代码真是山路十八弯啊,找了半天。 sql.php 895行  PMA_displayTable($result, $disp_mode, $analyzed_sql);  ( librariesdisplay_tbl.lib.php 1922行定义) 方法内部 2163行调用 该文件中(1091行)定义的 PMA_displayTableBody()方法。 其方法内部1029行 调用的 PMA_getIcon() (librariescommon.lib.php 79行定义的) 看方法体找到 大概119行 懒得去分析, 直接注释掉  if ($include_text) {        $button .= $alternate;    } 扯上了$GLOBALS['cfg']['PropertiesIconic']  改config.inc.php 可以?没认真分析。 显示为: 不得不佩服phpmyadmin源码开发者。。。实现强大的功能但是让人看了有想死的冲动!

发表在 Php | 标签为 , | 留下评论

php session

今天抽时间好好把php session相关的知识看了一下,受益匪浅。 参考链接: 1.PHP会话Session使用入门 http://bbs.phpchina.com/viewthread.php?tid=50716&highlight=php%BB%E1%BB%B0 2.php5中session详解 对php.ini 配置项的详解 http://sqlnet.blog.51cto.com/343343/130274 3.PHP中的SESSION详解 http://hi.baidu.com/chendezh2/blog/item/16059a37aa0dc985a71e1227.html 4.如何去除URL中的SESSION ID  http://blog.163.com/yageeart@126/blog/static/4960228201010610471978/ 5.http中cookie与session的分析 http://www.22455.com/index.php/posts/_42   杂记: session_name()   默认在配置为PHPSESSID  有参数就是设置  (记录sessionid的cookie变量名,firefox 装个firecookie看比较直观。) session_id()   32位串 有参数就是设置 $_SESSION['TEST'] = time(); $_SESSION['TEST3'] = time(); 若为文件存储session.save_handler = files   在session.save_path设置的目录下生成文件 名为 sess_跟session_id() 文件内容形如 TEST|i:1318069225;TEST3|i:1318069259; … 继续阅读

发表在 Php | 标签为 , , | 留下评论