×

phpmysql线程安全

phpmysql线程安全(mysql 线程安全)

admin admin 发表于2023-03-31 06:19:09 浏览49 评论0

抢沙发发表评论

本文目录一览:

怎么搭建php环境Apache+PHP+mysql

一、Apache安装

版本解释:openssl是表示带有openssl模块,利用openssl就可以给Apache配置SSL安全链接的,也就是使用https://方式进行访问。

 nossl则表示不带OpenSSL模块,无 法用于SSL安全链接,在这里我们下载带OpenSSL的。

选择版本:apache_2.2.14-win32-x86-openssl-0.9.8k.msi (此处以32位为例)

下载地址:

首先我们在D盘(盘符根据实际情况自己选择)新建一个目录, 并且命名为“WAMP”其意义为“Wdindows Apache Mysql PhpMyAdmin” 之后安装的一些内容,也都将安装在该目录下。-phpmysql线程安全

1.安装说明:

运行apache安装程序,方法非常简单,弹安装界面后一直“next”

接着会出现一个界面,需要填写3个内容,分别为:Network Domain、Server Name、Administrator’s Email Address 随便填写就好,不影响内容。

在下面还有2个选项,默认选择为80端口,第二个为8080端口,根据个人需求选择,一般为默认80端口。

我们继续安装,选择Custom(自定义安装)-“next”

其中有打着红X的组件,我们单击这个组件容,选择“This feature, and all subfeatures, will be installed on local hard drive.”,即“此部分,及下属子部分内容,全部安装在本地硬盘上”。-“next”-phpmysql线程安全

然后选择右下角的“change ”改变安装路径,安装到刚才建立的目录中“D:\WAMP\Apache\”-“next”

安装完毕后,电脑右下角会多出一个图标,双击打开,选择start或restart,能正常运行,至此安装完毕。

2.修改配置:

打开安装录下D:\WAMP\Apache\conf\httpd.conf 文件(修改配置文件时,不建议使用记事本,可能会对其造成影响,推荐使用Notepad++或其他编辑软件打开修改)

打开以后Ctrl+F查找所要修改的内容

在#LoadModule vhost_alias_module modules/mod_vhost_alias.so下添加:

LoadModule php5_module “D:/WAMP/PHP/php5apache2_2.dll”

PHPIniDir “D:/WAMP/PHP”

AddType application/x-httpd-php .php

AddType application/x-httpd-php .htm

AddType application/x-httpd-php .html

DocumentRoot “E:/WAMP/Apache/htdocs”

修改成(这里的路径和IIS中wwwroot目录一样,用于存放网页,自定义或不做修改默认):DocumentRoot “D:/WAMP/www”

修改成(自定义或不做修改默认):

DirectoryIndex index.html

修改成:DirectoryIndex index.php default.php index.html index.htm default.html default.htm

3.测试

在D:/WAMP/www目录下 建立个index.html页面

在浏览器中输入

如果能正常显示,Apache配置完毕,已经正常运行。

二、MySql安装

版本解释:The Essentials Package:不包含 embedded server and benchmark suite,有自动安装程序和配置向导,没有MySQL Documentation。 -phpmysql线程安全

 The Complete Package:包含 embedded server and benchmark suite,有自动安装程序和配置向导,有MySQL Documentation。

 The Noinstall Archive:包含 embedded server and benchmark suite,没有自动安装程序和配置向导,有MySQL Documentation。

选择版本:mysql-essential-5.1.44-win32.msi

下载地址:

1.安装说明:

打开安装程序,单击“next”

选择custom,组件为默认选择,我们不做改动-“next”

路径设置为“D:\WAMP\Mysql”-“next”

安装好以后点击“finish”

跟着会出现一个配置向导-“next”

选择“Detailed Configuration(详细配置)”-“next”

这里有3个选项:

Developer Machine,将只用尽量少的内存;

Server Machine,将使用中等数量内存;

Dedicated MySQL Server Machine,这台服务器上面只跑mysql数据库,将占用全部的内存。

可以根据自己需求选择,这里我们选择第二种“Server Machine”-“next”

选择数据库用途,同样有3个选项:

Mutltifunctional Database多功能用途,将把数据库优化成很好的innodb存储类型和高效率的myisam存储类型;

Transactional Database Only只用于事务处理类型,最好的优化innodb,但同时也支持myisam;

Non-Transactional Databse Only非事务处理类型,适合于简单的应用,只有不支持事务的myisam类型是被支持的。

一般选择第一种多功能的,同样我们也是。-“next”

选择InnodDB的数据存放位置,一般默认就行,为了统一我填写了“WAMP/MySQL Datafiles”-“next”

选择mysql允许的最大连接数,第一种是最大20个连接并发数,第二种是最大500个并发连接数,最后一种是自定义,自己可以根据需求选择,我选择第二个-“next”

下面是选择数据库监听的端口,一般默认是3306,如果改成其他端口,以后连接数据库的时候都要记住修改的端口,否则不能连接mysql数据库,比较麻烦,这里不做修改,用mysq的默认端口:3306-“next”-phpmysql线程安全

这一步设置mysql的默认编码,我们选择第三个,并在Character Set菜单中,选择“gbk”编码-“next”

(注:如果要用原来数据库的数据,最好能确定原来数据库用的是什么编码,如果这里设置的编码和原来数据库数据的编码不一致,在使用的时候可能会出现乱码。)

这一步是是否要把mysql设置成windows的,一般选择设成服务,这样以后就可以通过服务中启动和关闭mysql数据库。下面的复选框也勾选上,这样,在cmd模式下,不必非到mysql的bin目录下执行命令。也就是把上下2个勾都打上,中间默认-“next”-phpmysql线程安全

这一步是设置mysql的超级用户密码,这个超级用户非常重要,对mysql拥有全部的权限,请设置好并牢记超级用户的密码,下面有个复选框是选择是否允许远程机器用root用户连接到你的mysql服务器上面,如果有这个需求,也请勾选。这里我们使用默认选择,在New root password和Confirm中输入密码。“next”-phpmysql线程安全

点击“execute”进行配置,稍微等待一会,圆点上的勾全部打上,就代表配置完毕。

2.修改配置:

打开D:\WAMP\MySQL\my.ini

设置datadir为D:/WAMP/MySQL/data/或你所要存放数据位置的目录即可。

三、PHP安装

版本解释:VC9 专门为IIS定值的脚本,使用Visual Studio 2008编译器编译,支持最新的微软组建,从而提高效率。

 VC6 是为了其他WEB服务软件提供的脚本 如 Apache。

 Thread Safe 现成安全,之星时会进行线程 安全检查,以防止有心要求就启动新线程(Thread)的CGI执行方式而耗尽系统资源。

 Non Thread Safe是非线程安全,在执行时不进行线程(Thread)安全检查

选择版本:PHP5.3(5.3.1)中VC6 x86 Thread Safe下 ZIP下载

下载地址:

1.安装说明

由于我们下载的的是ZIP压缩包,只需要将文件解压到“D:\WAMP\PHP”目录下即可

2.修改配置

将E:\WAMP\PHP\php.ini-development 文件修改成php.ini

打开php.ini

; extension_dir = “ext”

修改成:extension_dir = “E:\WAMP\PHP\ext”

将947行下,这些文件前面的“;”去除

extension=php_curl.dll

extension=php_gd2.dll

extension=php_mbstring.dll

extension=php_mysql.dll

extension=php_mysqli.dll

extension=php_pdo_mysql.dll

extension=php_xmlrpc.dll

;date.timezone =

修改成(很多网站没提到这里要修改,默认为美国时间,如果不修改会报错):date.timezone = Asia/Shanghai

3.测试

重启Apache(修改过配置文件 必须重启Apache才会生效)

新建个index.php 页面,代码中输入,保存文件放到“D:\WMAP\www\”目录下

打开浏览器输入: 如果能正常显示,说明PHP配置完毕,可以查看该页面的PHP信息是否正确。

(注:在改文件中输入函数可输出大量的有关PHP当前状态的信息,如PHP版本,服务器信息和环境等。)

(注:)

接着我们测试下,是否能连接到Mysql

再新建个link.php,下代码中输入

$link=mysql_connect(“127.0.0.1″,”root”,”Mysql安装时填写的密码”);

if(!$link) echo “Mysql数据库连接失败!”;

else echo “Mysql数据库连接成功!”;

mysql_close();

?>

也保存文件放到“D:\WMAP\www\”目录下

打开浏览器输入: 查看

四、PhpMyAdmin安装

版本解释:phpMyAdmin-3.2.5

选择版本:phpMyAdmin-3.2.5-all-languages.zip

下载地址:

1.安装说明

解压到D:\WAMP\phpMyAdmin

2.修改配置

打开D:\WAMP\phpMyAdmin\libraries\config.default.php

$cfg['PmaAbsoluteUri'] = ”;

修改成(填写访问phpMyAdmin的绝对URL):$cfg['PmaAbsoluteUri'] = ‘’;

$cfg['Servers'][$i]['host'] = ‘localhost’;

修改成(填写服务器地址,通常默认,不需要修改):$cfg['Servers'][$i]['host'] = ‘localhost’;

$cfg['Servers'][$i]['user'] = ‘root’;

修改成(填写Mysql用户名,这里我们默认):$cfg['Servers'][$i]['user'] = ‘root’;

$cfg['Servers'][$i]['password'] = ”;

修改成(填写Mysql密码):$cfg['Servers'][$i]['password'] = ‘Mysql PWD;

$cfg['Servers'][$i]['auth_type'] = ‘cookie’;

修改成(设置认证方法,安全因素考虑,填写成cookie):$cfg['Servers'][$i]['auth_type'] = ‘cookie’;

$cfg['blowfish_secret'] = ”;

修改成(设置短语密码,如果上面设置成cookie,那这里不能留空,不然登陆会提示错误):$cfg['blowfish_secret'] = ‘cookie’;

3.测试

打开浏览器输入: 访问和登陆

五、结尾

至此Windows7下的PHP环境搭建完毕,大家尽情的使用吧。

为什么apache2.4配置PHP7.1.31线程安全版,无法配置到mysqli模块,也无法配置mysql,也无法连接到mysql?

mysql库早在php5.5已经弃用了,从7.0开始移除了这个扩展。

mysqli一直都可以用.

你的截图里面并没有包含mysqli扩展的信息,你需要在phpinfo里看一下mysqli扩展是否正常,如果无法连接,提供一下连接代码,以及报错信息

php在执行一个耗时的mysql时无法进行其他mysql操作?

建议先使用外部工具连接数据库试试,看是否是数据库支撑不了大规模数据的写入查询等等。检查数据库的连接数,php配置的连接数

如果是连接数满了,简单粗暴的方式,修改连接数配置。如果是mysql所消耗的内存服务问题,就要修改mysql内存,加大配置。优化一下耗时长的业务,这个和程序端的代码,是否为多线程没有太大的关系,从你发出来的情况,就是1个请求耗时太长,让后其他请求没有返回,要么是web服务内存吃紧,要么是mysql服务压力过大,连接数用满的情况,应该不太可能。-phpmysql线程安全

php mysqli 常用函数有哪些

php  中 mysqli 是个类,这个类的函数(方法)有:

mysqli::$affected_rows — Gets the number of affected rows in a previous MySQL operation

mysqli::autocommit — 打开或关闭本次数据库连接的自动命令提交事务模式

mysqli::begin_transaction — Starts a transaction

mysqli::change_user — Changes the user of the specified database connection

mysqli::character_set_name — 返回当前数据库连接的默认字符编码

mysqli::$client_info — Get MySQL client info

mysqli::$client_version — Returns the MySQL client version as a string

mysqli::close — 关闭先前打开的数据库连接

mysqli::commit — 提交一个事务

mysqli::$connect_errno — Returns the error code from last connect call

mysqli::$connect_error — Returns a string description of the last connect error

mysqli::__construct — Open a new connection to the MySQL server

mysqli::debug — Performs debugging operations

mysqli::dump_debug_info — 将调试信息输出到日志

mysqli::errno — 返回最近函数调用的错误代码

mysqli::$error_list — Returns a list of errors from the last command executed

mysqli::$error — Returns a string description of the last error

mysqli::$field_count — Returns the number of columns for the most recent query

mysqli::get_charset — Returns a character set object

mysqli::get_client_info — Get MySQL client info

mysqli_get_client_stats — Returns client per-process statistics

mysqli_get_client_version — 作为一个整数返回MySQL客户端的版本

mysqli::get_connection_stats — Returns statistics about the client connection

mysqli::$host_info — 返回一个表述使用的连接类型的字符串

mysqli::$protocol_version — 返回MySQL使用的协议版本号

mysqli::$server_info — 返回MySQL服务器的版本号

mysqli::$server_version — 作为一个整数返回MySQL服务器的版本

mysqli::get_warnings — Get result of SHOW WARNINGS

mysqli::$info — Retrieves information about the most recently executed query

mysqli::init — Initializes MySQLi and returns a resource for use with mysqli_real_connect()

mysqli::$insert_id — Returns the auto generated id used in the last query

mysqli::kill — Asks the server to kill a MySQL thread

mysqli::more_results — Check if there are any more query results from a multi query

mysqli::multi_query — Performs a query on the database

mysqli::next_result — Prepare next result from multi_query

mysqli::options — Set options

mysqli::ping — Pings a server connection, or tries to reconnect if the connection has gone down

mysqli::poll — Poll connections

mysqli::prepare — Prepare an SQL statement for execution

mysqli::query — 对数据库执行一次查询

mysqli::real_connect — 建立一个 MySQL 服务器连接

mysqli::real_escape_string — Escapes special characters in a string for use in an SQL statement, taking into account the current charset of the connection-phpmysql线程安全

mysqli::real_query — 执行一个mysql查询

mysqli::reap_async_query — Get result from async query

mysqli::refresh — Refreshes

mysqli::release_savepoint — Removes the named savepoint from the set of savepoints of the current transaction-phpmysql线程安全

mysqli::rollback — 回退当前事务

mysqli::rpl_query_type — Returns RPL query type

mysqli::savepoint — Set a named transaction savepoint

mysqli::select_db — 选择用于数据库查询的默认数据库

mysqli::send_query — 发送请求并返回结果

mysqli::set_charset — 设置默认字符编码

mysqli::set_local_infile_default — Unsets user defined handler for load local infile command

mysqli::set_local_infile_handler — Set callback function for LOAD DATA LOCAL INFILE command

mysqli::$sqlstate — Returns the SQLSTATE error from previous MySQL operation

mysqli::ssl_set — Used for establishing secure connections using SSL

mysqli::stat — Gets the current system status

mysqli::stmt_init — 初始化一条语句并返回一个用于mysqli_stmt_prepare(调用)的对象

mysqli::store_result — Transfers a result set from the last query

mysqli::$thread_id — Returns the thread ID for the current connection

mysqli::thread_safe — 返回是否是线程安全的

mysqli::use_result — Initiate a result set retrieval

mysqli::$warning_count — Returns the number of warnings from the last query for the given link

以上函数清单直接来自  网站。你可以进入该网站参看。

PHP线程安全和非线程安全的区别

Windows下的PHP版本分两种:线程安全版本与非线程安全版本。

要论两者的区别,详细论说起来比较麻烦,从使用者的角度,记住什么时候用哪种版本的区别就可以了吧:

1、windows + IIS + FastCGI :使用非线程安全版本。

解释:

以FastCGI方式安装PHP时,PHP拥有独立的进程,并且FastCGI是单一线程的,不存在多个线程之间可能引发的相互干扰(这种干扰通常都是由于全局变量和静态变量导致的)。由于省去了线程安全的检查,因此使用FastCGI方式比ISAPI方式的效率更高一些。-phpmysql线程安全

2、windows + IIS + ISAPI :使用线程安全版本。

解释:

PHP以ISAPI方式安装时,PHP没有独立的进程,而是作为DLL被IIS加载运行的,即是依附于Web服务器进程的。当Web服务器运行在多线程模式下(IIS正是这种情况),PHP自然也就运行在多线程模式下。只要是在多线程模式下运行,就可能存在线程安全问题,因此应选择PHP的线程安全版本。-phpmysql线程安全

3、windows + Apache + PHP(模块) :使用线程安全版本。

解释:

如果你要在Apache中以模块方式安装PHP,则你应该使用PHP的线程安全的版本。原因是当PHP作为Apache的模块安装时,PHP没有独立的进程,而是作为模块以DLL的形式被加载到Apache中的,是随Apache的启动而启动的,而Windows下的Apache为多线程工作模式,因此PHP自然也就运行在多线程模式下。因此,这种情况下应使用PHP的线程安全版本。-phpmysql线程安全

4、windows + Apache + PHP(ISAPI) :使用线程安全版本。

解释:

由于以ISAPI方式来安装PHP时,PHP也没有独立的进程,也是作为模块被加载到Apache中的,因此,同样也需要使用PHP的线程安全版本。

一般不建议在Apache中以ISAPI方式来安装PHP,原因是到目前为止,Apache通过mod_isapi.so模块来实现的ISAPI功能并不完整,并未完整实现微软对ISAPI所制定的全部规范。

5、windows + Apache + PHP(FastCGI) :使用非线程安全版本。

解释:

如果你要在Apache中以FastCGI方式使用PHP,则同在IIS中使用FastCGI的PHP的情况一样,你应该使用PHP的非线程安全的版本。原因是在Apache中以FastCGI方式安装PHP时,PHP拥有独立的进程,并且FastCGI是单一线程的,故应使用PHP的非线程安全版本以提高性能。-phpmysql线程安全

以上资料总结相关资料,分条明细,供选择。