bob体育平台56本PHPE-BOOK:最新近期更新

2020-02-07 23:42栏目:bob体育平台
TAG:

本文实例讲述了PHP+redis实现添加处理投票的方法。分享给大家供大家参考,具体如下:

56本PHP电子书之一:《24小时学会使用php mysql and apache(ii)》.rar

最近试了一下PHP7,在编译和支持MySQL上都遇到一些问题,相信不少同学也同样遇到,所以在这里聊一下这个过程。简单来讲编译PHP7只需要3步:

pconnect; if(isset($_SERVER['HTTP_REFERER'])){ $url_md5 = md5($_SERVER['HTTP_REFERER']); } $adve_key = 'adve'; $adve_key_exists = 'adve_exists'; if(!$redis->exists{ $list = $mysql_obj->fetch_array("select * from admin_online_adve"); if{ foreach ($list as $key => $value) { $url_hash = md5; $adve_hash_key = $adve_key.":".$url_hash; $id = $value['id']; $redis->set; $redis->set($adve_key_exists,true); } } } $adve_new_key = $adve_key.':'.$url_md5; if($redis->exists{ $adve_plus = $adve_new_key.":plus" ; if(!$redis->exists{ $redis->set; }else{ $redis->incr; $num = $redis->get; if{ $id = $redis->get; // insert to sql; $mysql_obj->query("update admin_online_adve set adve_num=adve_num+$num where id=$id"); $redis->set; } } } }?>统计 Loading...

1、./buildconf --force2、./configure3、make && make install

其中php连接mysql类mysql.class.php如下:

56本PHP电子书之二:《php与sql server 2000架构windows web数据库实务》

1、3步,都没啥好管的,configure是编译的关键,涉及到PHP对一些库的支持,这里我们使用最小的支持,包括MySQL:

_server = $dbserver; $this->_user = $dbuser; $this->_password = $dbpassword; $this->_dbname = $database; $this->_persistency = $persistency; $this->_autoConnect = $autoConnect; $this->_checkDB = $checkdb; if{ $this->connection(); } } function connection { if { if($this->_isConnect && isset($this->_db_connect_id)){ @mysql_close($this->_db_connect_id); } } $this->_db_connect_id =  ? @mysql_pconnect($this->_server, $this->_user, $this->_password):@mysql_connect($this->_server, $this->_user, $this->_password,$newLink); if ($this->_db_connect_id) { if  > '4.1') { if ($this->_charset != "") { @mysql_query("SET NAMES '".str_replace('-', '', $this->_charset)."'", $this->_db_connect_id); } } if  > '5.0') { @mysql_query("SET sql_mode=''", $this->_db_connect_id); } //检测指定数据库是否连接成功 if { $dbname = mysql_query',$this->_db_connect_id); $dbname = mysql_fetch_array; $dbname = trim; }else{ $dbname = ''; } if ($dbname==$this->_dbname || $dbname==''){ if (!@mysql_select_db($this->_dbname, $this->_db_connect_id)) { @mysql_close($this->_db_connect_id); $this->_halt("cannot use database " . $this->_dbname); } }else{ if ($this->_checkDB && !$newLink){ $this->connection; } } return true; } else { $this->_halt('connect failed.',false); } } function setCharset{ //$charset = str_replace; $this->_charset = $charset; } function setDebug{ $this->_isDebug = $isDebug; } function query { return $this->_runSQL($sql,MYSQL_SQL_GETDATA,$type); } function execute { return $this->_runSQL($sql,MYSQL_SQL_EXECUTE,"UNBUFFERED"); } function _runSQL($sql,$sqlType=MYSQL_SQL_GETDATA,$type = '') { if { $this->_result = @mysql_unbuffered_query($sql,$this->_db_connect_id); }else{ $this->_result = @mysql_query($sql,$this->_db_connect_id); } //测试模式下保存执行的sql语句 if{ $this->_sql[]=$sql; } if  { return $sqlType==MYSQL_SQL_GETDATA?$this->getNumRows():$this->getAffectedRows(); }else{ $this->_halt; return false; } } function next($result_type=MYSQL_ASSOC) { $this->fetchRow; return is_array; } function f { if(is_array{ return $this->_record[$name]; }else{ return false; } } function fetchRow($result_type=MYSQL_ASSOC) { if { $this->_record = @mysql_fetch_array($this->_result,$result_type); return $this->_record; }else{ return false; } } function getAll($sql,$primaryKey="",$result_type=MYSQL_ASSOC) { if ($this->_runSQL($sql,MYSQL_SQL_GETDATA)>=0){ return $this->fetchAll($primaryKey,$result_type); }else{ return false; } } function getOne($sql,$result_type=MYSQL_ASSOC) { if ($this->_runSQL($sql,MYSQL_SQL_GETDATA)>0){ $arr = $this->fetchAll; if{ return $arr[0]; } }else{ return false; } } function fetchAll($primaryKey = "",$result_type=MYSQL_ASSOC) { if  { $i = 0; $this->_rowset = array(); if  { while($this->next { $this->_rowset[$i] = $this->_record; $i++; } }else{ while($this->next { $this->_rowset[$this->f] = $this->_record; $i++; } } return $this->_rowset; }else{ //$this->_halt; return false; } } function checkExist { return $this->query>0?true:false; } function getValue { if { $this->next; return $this->f; }else{ return false; } } function getNumRows() { return @mysql_num_rows; } function getNumFields() { return @mysql_num_fields; } function getFiledName { return @mysql_field_name($this->_result, $offset); } function getFiledType { return @mysql_field_type($this->_result, $offset); } function getFiledLen { return @mysql_field_len($this->_result, $offset); } function getInsertId() { return @mysql_insert_id($this->_db_connect_id); } function getAffectedRows() { return @mysql_affected_rows($this->_db_connect_id); } function free_result() { $ret = @mysql_free_result; $this->_result = 0; return $ret; } function version() { return @mysql_get_server_info($this->_db_connect_id); } function close() { return @mysql_close($this->_db_connect_id); } function sqlOutput($isOut = true, $all = true){ if{ $ret = implode; }else{ $ret = $this->_sql[count-1]; } if { echo $ret; }else{ return $ret; } } function _halt($msg="Session halted.",$getErr=true) { if{ if{ $this->_errno = @mysql_errno($this->_db_connect_id); $this->_error = @mysql_error($this->_db_connect_id); printf("MySQL _error: %s 
/n",$this->_errno,$this->_error); } die; }else{ die; } }}?>

curlgdfpmmysqlnd

希望本文所述对大家PHP程序设计有所帮助。

56本PHP电子书之三:NO_54_linux+php+mysql案例教程

之所以把curl和gd拿来说,目的是要搞清楚,这些三方库在编译PHP之前得安装好,可以直接使用yum安装在默认位置,也可以编译安装到指定位置,yum安装后,编译时不用指定库的安装位置,关于安装这些库,可以搜索一下有很多。下面看看基本的configure

./configure --prefix=/apps/php/php7.0 --enable-mbstring --with-curl --with-gd --with-config-file-path=/apps/php/php7.0/etc/ --

56本PHP电子书之四:php4 网页编程实例解析

enable-fpm --enable-mysqlnd --with-pdo-mysql=mysqlnd

PHP-FPM

56本PHP电子书之五:php4.0 时尚编程百例

关于fpm,相信不用多说,用它来支持PHP是一个比较好的选择,PHP5.3.3开始就已经内置了php-fpm,所以PHP7里当然也有,只需要--enable-fpm一下就可以了

--start 启动--stop 强制终止--quit 平滑终止--restart 重启--reload 重新平滑加载php的php.ini--logrotate 重新启用log文件

56本PHP电子书之六:php4.0与mysql动态网站编程

MySQL支持

重点讲一下这个,因为在它上面花了一点时间,不知道从哪一版本开始,PHP不在希望使用mysql的库来支持mysql的连接,启用了mysqlnd来支持,听说比libmysql要快很多,PHP5.x还可以使用libmysql,PHP7貌似已经取消了支持,编译都没有了--with-mysql参数,只支持--with-mysqli和--with-pdo-mysql,可以通过查看configure的参数来知道:

56本PHP电子书之七:php5 mysql 编程入门

./configure -help | grep mysql 

可以看到,PHP希望使用mysqlnd来支持MySQL,所以参数可以这样写:

56本PHP电子书之八:php5 和 mysql 圣经(pdf)

--enable-mysqlnd--with-mysqli=mysqlnd--with-pdo-mysql=mysqlnd

mysqlnd是不需要mysql支持的,所以不用先安装好mysql一样可以编译通过,启动php-fpm,查看一下phpinfo,能看到mysqlnd和pdo_mysql表示php已经可以支持mysql了

56本PHP电子书之九:php5快速网站开发

几个问题

编译问题:cc: Internal error: Killed

56本PHP电子书之十:php5揭密.rar

这个问题是第一次遇到,原来是我的阿里云服务器关掉了swap,内存不够用,就报了这个错。 解决办法很简单,configure时加上--disable-fileinfo参数就可以了。

PHP报找不到mysql服务

56本PHP电子书之十一:php apache 和 mysql 网页开发初步

正如它所说,确实没找到,看看phpinfo中pdo_mysql.default_socket项

mysql.sock在哪里,再看一下mysql.sock的真正位置,使用命令:ps -ef|grep mysql查看:

56本PHP电子书之十二:php v5 __学习

明显不在一个位置上,我的正确位置是:/var/lib/mysql/mysql.sock

所以,修改一下php.ini,找到pdo_mysql.default_socket,改为你的实际位置,重启一下php-fpm,很不幸,虽然php.ini有这个配置,修改后,竟然不行,最好是编译的时候,指定mysql.socket的位置:

56本PHP电子书之十三:php 核心编程所有例程

--with-mysql-sock=/var/lib/mysql/mysql.sock

如果还不行,可以到/tmp目录下建立一个mysql.sock的软链接:

56本PHP电子书之十四:php&mysql商业网站架设实务

ln -s /var/lib/mysql/mysql.sock mysql.sock 

再重启一次php-fpm,相信已经正常运行了。如果需要PHP支持的库更多,可以再次编译,在configure时把需要的支持加上,就是--with-xxx这中,记得如果是三方的,要先安装这些库才行哦。

56本PHP电子书之十五:php&mysql无需编程轻松创建数据库网站

56本PHP电子书之十六:php_mysql programming

56本PHP电子书之十七:php_mysql教程

56本PHP电子书之十八:php+mysql开发web程序教程

56本PHP电子书之十九:php+mysql网络开发技术

56本PHP电子书之二十:php+sql2000系统教程

版权声明:本文由bob体育app发布于bob体育平台,转载请注明出处:bob体育平台56本PHPE-BOOK:最新近期更新