首页 开发编程 正文

php外键怎么设置

它记录了所有的DDL和DML(除了数据查询语句)语句,复制原理1.主库操作保留binlog日志2.从库的IO线程从主库拉取binlog日志,判断Seconds_Behind_Master参数代表数据同步是否延迟:...

php外键怎么设置,如何使用MySQL数据库?

主从架构— —概念

binlog日志

MySQL的二进制日志可以说是MySQL最重要的日志了,它记录了所有的DDL和DML(除了数据查询语句)语句,以事件形式记录,还包含语句所执行的消耗的时间。

复制原理

1. 主库操作保留binlog日志

2. 从库的IO线程从主库拉取binlog日志,并生成中继日志(relay log)

3. 从库的SQL线程解析中继日志,并在本身回放

状态检查

主要通过判断IO线程和SQL线程是否处于Running判断复制是否正常,判断Seconds_Behind_Master参数代表数据同步是否延迟:

mysql> show slave status\G... Slave_IO_Running: YesSlave_SQL_Running: YesSeconds_Behind_Master: 0...

主从架构— —衍生各种扩展的主从架构

1. 一主多从

2. 双主复制

3. 级联复制

4. 等等

读写分离

大部分场景下,读的频率比写的频率会高很多。所以可以通过扩展多个SLAVE节点提高整体的使用性能。

数据备份

传统的备份包括三种方式:

1. lvm snapshot(LVM快照备份)

2. mysqldump

3. Xtarbackup

那么要如何实现数据的一致性备份呢(一致性备份是所有数据/文件/磁盘 需要在同一个时间点进行备份)

LVM SNAPSHOT

1. 执行FTWRL(FLUSH TABLES WITH READ LOCK)

1.1上全局读锁(lock_global_read_lock)

1.2清理表缓存(close_cached_tables)

1.3上全局COMMIT锁(make_global_read_lock_block_commit)

2. 执行lvcreate 创建lv快照.

3. UNLOCK TABLES解锁

MYSQLDUMP

1. 开启可重复读事务隔离

2. 开启事务

3. 建立数据快照(可以理解为select * from *)

4. 结束事务

XTRABACKUP

1. 不是整体采用备份锁,只有特定阶段。

2. indodb阶段不需要加锁,ACID的C(持续性)是通过Redo log实现,通过线程增量记录redo log实现。

php程序员面试题都有哪些?

想了解IT界的那些事儿,请关注萌新程序猿!!!

刚好我之前在自己的个人网站(www.onezero.cc

)中整理过此类的知识,因此特地奉上。

首先总结一下,既然是php程序员,下面的知识是最基本的:

你需要了解PHP的各类基础知识,php语法、面向对象、设计模式等等,其次你需要懂得PHP的开发框架的知识,tp、laveral、yii等,再次你需要了解前端的知识,了解数据库(mysql等)的知识,了解php运行的服务器环境nginx、apache等,更进一步你需要了解redis、缓存之类,最后你需要掌握web开发安全的相关知识,比如sql注入、xss等。写接口,很多公司是前后端完全分离。个人面试整理

1.PHP的魔术变量都有什么?

__LINE__ 文件中的当前行号。 __FILE__ 文件的完整路径和文件名。如果用在被包含文件中,则返回被包含的文件名。 __DIR__ 文件所在的目录。如果用在被包括文件中,则返回被包括的文件所在的目录。 __FUNCTION__ 常量返回该函数被定义时的名字 __CLASS__ 常量返回该类被定义时的名字(区分大小写)。 __METHOD__ 类的方法名(PHP 5.0.0 新加)。返回该方法被定义时的名字(区分大小写)。 __NAMESPACE__ 当前命名空间的名称(区分大小写)。此常量是在编译时定义。

2.PHP超级全局变量(9个)

$GLOBALS 储存全局作用域中的变量 $_SERVER 获取服务器相关信息 $_REQUEST 获取POST和GET请求的参数 $_POST 获取表单的POST请求参数 $_GET 获取表单的GET请求参数 $_FILES 获取上传文件的的变量 $_ENV 获取服务器端环境变量的数组 $_COOKIE 浏览器cookie的操作 设置cookie:setcookie(name, value, expire, path, domain); 获取cookie:$_COOKIE[“user”]; 删除cookie:setcookie(“user”, “”, time()-3600);//设置过期时间 $_SESSION 服务端session的操作 使用session前一定要session_start()启动session 储存session:$_SESSION[“name”]=”King”;//数组操作 销毁session:unset($_SESSION[“name”]);//销毁一个 session_destroy()和unset($_SESSION);//销毁所有的session

3.PHP魔术函数(13个)

__construct() 实例化对象时被调用,当__construct和以类名为函数名的函数同时存在时,__construct将被调用,另一个不被调用。 __destruct() 当删除一个对象或对象操作终止时被调用。 __call() 对象调用某个方法,若方法存在,则直接调用;若不存在,则会去调用__call函数。 __get() 读取一个对象的属性时,若属性存在,则直接返回属性值;若不存在,则会调用__get函数。 __set() 设置一个对象的属性时,若属性存在,则直接赋值;若不存在,则会调用__set函数。 __toString() 打印一个对象的时被调用。如echo $obj;或print $obj; __clone() 克隆对象时被调用。如:$t=new Test();$t1=clone $t; __sleep() serialize之前被调用。若对象比较大,想删减一点东东再序列化,可考虑一下此函数。 __wakeup() unserialize时被调用,做些对象的初始化工作。 __isset() 检测一个对象的属性是否存在时被调用。如:isset($c->name)。 __unset() unset一个对象的属性时被调用。如:unset($c->name)。 __set_state() 调用var_export时,被调用。用__set_state的返回值做为var_export的返回值。 __autoload() 实例化一个对象时,如果对应的类不存在,则该方法被调用。

4.前端后端的常用开发框架都有哪些?

前端:(1) CSS: Bootstrap、EasyUI

(2)JavaScript:VUE.js、angular.Js、jQuery.js。

后端:thinkPHP、Yii、Laravel、swoole、workerman(当时只想到这几个)、。

5.如何查看防火墙开放的端口号service iptables status

6.查看防火墙特定的端口号,例如80端口的状态?netstat -an | grep 80 查看80端口被什么占用netstat -tunlp | grep 80lsof -i:80

7.Linux系统中System进程占用大量CPU,可能的原因?(1) 进入了一个死循环无法跳出来;(2) 也许是一直在等待一个信号,如从dbus上读取一个用户需要的信息; #dbus是一个为应用程序间通信的消息总线系统, 用于进程之间的通信。(3) 有可能是程序在对一个非常大的内容进行分析和处理;(4) 有可能是程序要处理的问题比较多,所以在一个个慢慢的执行。

8.说一下HTTP2.0与HTTP1.0的根本区别。

9.InnoDB和MyISAM的区别是什么,二者分别应用与什么方面?

10.用尽量多的方法说明如何提高一个网页的访问速度。

11.请设计一个通信协议,实现与摄像头之间的通信,要注意协议的安全性和可扩展性。

12.如果一个公司有几十个系统,每一个系统都需要登录,现在请你设计一个系统,可以实现每一个系统的单点登录。

其他整理

1、用PHP打印出前一天的时间格式是2017-9-5 15:30:21

echo date(‘Y-m-d H:i:s’, strtotime(‘-1 day’));

2、echo(),print(),print_r()的区别

echo是PHP语句, print和print_r是函数,语句没有返回值,函数可以有返回值(即便没有用)

print只能打印出简单类型变量的值(如int,string)

print_r可以打印出复杂类型变量的值(如数组,对象)

echo — 输出一个或者多个字符串

3、能够使HTML和PHP分离开使用的模板

smarty,Heyes Template Class等

5、使用哪些工具进行版本控制?

VS Server on Apache作服务端,WinCVS作客户端;Subversion on Apache/DAV 做服务端,TortoiseSVN做客户端,或者Subclipse做客户端.

6、如何实现字符串翻转?

strrev()

7、优化MYSQL数据库的方法。

(1).选取最适用的字段属性,应该尽量把字段设置为NOT NULL,这样在将来执行查询的时候,数据库不用去比较NULL值。

(2).使用连接(JOIN)来代替子查询(Sub-Queries)

(3).使用联合(UNION)来代替手动创建的临时表

(4).尽量少使用 LIKE 关键字和通配符

(5).使用事务和外键

8、PHP的意思

Hypertext Preprocessor

9、MYSQL取得当前时间的函数是?,格式化日期的函数是

now(), DATE_FORMAT(date,format)

10、实现中文字串截取无乱码的方法。

mb_substr()

11、您是否用过版本控制软件? 如果有您用的版本控制软件的名字是?

TortoiseSVN-1.2.6 svn-1.2.3

12、您是否用过模板引擎? 如果有您用的模板引擎的名字是?

smarty

13、请简单阐述您最得意的开发之作

14、对于大流量的网站,您采用什么样的方法来解决访问量问题?

首先,确认服务器硬件是否足够支持当前的流量

其次,优化数据库访问。

第三,禁止外部的盗链。

第四,控制大文件的下载。

第五,使用不同主机分流主要流量

第六,使用流量分析统计软件。

—————————————————————–

15、用PHP写出显示客户端IP与服务器IP的代码

16、语句include和require的区别是什么?为避免多次包含同一文件,可用(?)语句代替它们?

require()和include()除了怎样处理失败之外在各

方面都完全一样。include()产生一个警告而require()则导致一个致命错误。

换句话说,如果你想在丢失文件时停止处理页面,用require()。include() 就不是这样,脚本会继续运行。

require()无论如何都会包含文件,而include()可以有选择地包含.

代替用

include_once

require_once

17、如何修改SESSION的生存时间.

18、有一个网页地址, 比如PHP开发资源网主页: ,如何得到它的内容?

19、在HTTP 1.0中,状态码401的含义是(?);如果返回“找不到文件”的提示,则可用 header 函数,其语句为(?);

未授权(Unauthorized)

如何快速有效地掌握数据库语言MySql?

如何快速有效掌握数据库语言SQL?

数据库有很多种,常见的数据库都是关系型数据库,如MySQL、Oracle、SQL Server等,当然,还有非关系型数据库,如MongoDB、Hbase等。

对于初学者,建议从MySQL开始,因为MySQL是目前使用最广泛的关系型数据库,学习起来相对容易,下面给出一些学习建议。

MySQL安装

首先需要安装MySQL,Windows下推荐使用MySQL Installer这个工具来安装MySQL。

下载地址:

https://dev.mysql.com/downloads/windows/installer/

通过Installer安装3个东西:

MySQL Server(MySQL服务器,必需)

MySQL Notifier(监视器:用于启动、重启MySQL Server,非必需)

MySQL Workbench(写SQL语句的工具,非必需)

如果你是一个PHP爱好者,可能安装过一些集成工具如xampp,phpadmin等,这些工具自带MySQL Server,也是可以的。

启动、连接MySQL Server

MySQL Server安装好后,默认是自动启动的。

如果需要重启MySQL服务,有两种方式:

1、通过MySQL Notifier来启动或者重启MySQL Server(注意,不是MySQL Workbench)。

2、通过“我的电脑”-“管理”-“服务和应用程序”-“服务”进行启动或者重启。

MySQL Server启动后,需要连接MySQL,推荐使用MySQL Workbench,当然用cmd命令行也可以。

数据库基本操作

数据库是用来存放数据表的地方,相当于电脑上的文件夹(database),里面可以放多个Excel表格(table)。

数据表基本操作

数据表是用来存放数据的地方,相当于电脑上的Excel表格(其实不准确),一张张二维的表格,里面可以存放数据。

MySQL中的数据类型

常用的数据类型有三种:字符型、数值型和日期时间型。

常用查询操作

SQL语句的核心在于查询,需要掌握的查询操作如下图所。

以下是关于SQL的一些其他操作,对于数据分析师来说,不太常用,有兴趣可以了解一下。

索引

索引类似于拿汉语字典的目录页(索引),我们可以按拼音、笔画、偏旁部首等排序的目录(索引)快速查找到需要的字。

自定义函数

MySQL本身提供了很多内置函数,但有时候需要实现我们自己的一些功能,就需要自定义函数。

自定义函数的函数体由多条可用的MySQL语句,流程控制,变量声明等语句构成。

存储过程

存储例程是存储在数据库服务器中的一组sql语句,通过在查询中调用一个指定的名称来执行这些sql语句命令。

存储过程一般是作为独立部分来执行,而函数可以作为查询语句的一个部分来调用。

事务

事务是一组SQL语句,用来维护数据库的完整性,保证成批的sql操作要么完全执行,要么完全不执行。

例如,银行账户转账业务,例如客户A转账100元给客户B,这里涉及两个操作:

客户A减去100元

客户B增加100元

必须同时成功或者同时失败。

游标

游标(cursor),一个存储在MySQL服务器上的数据库查询,被select语句检索出来的结果集,在存储了游标之后,可以根据需要滚动或浏览其中的数据,多用于存储过程。

欢迎关注【数据科学吧】,分享数据科学相关的知识!

在PHPMYADMIN中给一个表教如一个外键sql语句是怎么样子的?

在PHPMYADMIN中暂时还没有见到所见即所得的外键定义方式.你可以使用SQL指令去建立语法如下:ALTER TABLE 表名 ADD FOREIGN KEY (字段名) REFERENCES 表名(字段名)

PostgreSQL与MySQL相比?

当我们选择哪种数据库对我们的项目最合适时,必须在数据库之间进行比较。PostgreSQL和MySQL都是开源社区提供的两种最广泛的数据库。这两个数据库都有其优点和缺点,因此更好的选择取决于特定的要求和目标。

MySQL

MySQL是一种开放源代码且流行的数据库管理系统,用于管理 关系数据库 。Oracle提供了访问和管理该数据库的支持。与其他数据库相比,它是快速,可伸缩且易于使用的数据库管理系统。它通常与PHP脚本一起使用,以创建功能强大且动态的服务器端或基于Web的企业应用程序。

PostgreSQL

PostgreSQL 是一个先进的,开放源代码的[对象]-关系型数据库管理系统,它的主要目标是实现标准和可扩展性. PostgreSQL, 或者说是 Postgres, 试图把对 ANSI/ISO SQL标准的采用与修正结合起来。

对比其他的RDBMS, PostgreSQL以它对于对象-关系和或关系型数据库功能,比如对于可靠事务,例如原子性,一致性,隔离性和持久性(ACID)的完全支持,这些东西的高度需求和集合的支持,以示其独特性。

PostgreSQL是高度可编程的, 因而可以使用被称作“存储过程”的自定义程序进行扩展. 这些功能可以被创建用来简化一个重复、复杂并且常常需要数据库操作的任务的执行。

PostgreSQL比MySQL的优势

1、PostgreSQL是一个非常安全,独立且功能丰富的开源数据库。

2、PostgreSQL支持许多高级数据类型,例如多维数组,用户定义的类型等。

3、PostgreSQL很好地遵循了SQL标准,并支持“高级” SQL内容,例如窗口函数或公共表表达式。

4、它提供了Oracle和SQL Server支持的所有性能优化。

MySQL比PostgreSQL的优势

1、就数据库排名而言,MySQL比PostgreSQL更受欢迎。

2、在MySQL中,获得社区支持和搜索答案比PostgreSQL更容易。

3、复制是在MySQL而非PostgreSQL中很好地实现的。

如有不同观点,欢迎发表评论。如果喜欢我的回答,欢迎“点赞、分享”。

本文转载自互联网,如有侵权,联系删除