自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(23)
  • 收藏
  • 关注

原创 简述php异步编程

前言传统的 php-fpm 一个进程执行一个请求,要达到多少并发,就要生成多少个进程。更糟糕的是每次请求都需要重新编译执行,导致并发一直上不来。因此出现了 Swoole 和 WorkerMan 两个国内流行的常驻内存框架。这两个框架原理都是通过事件循环,让程序一直停留在内存,等待外部请求,达到高并发。点此加入我的企鹅群为什么需要异步先来看一个例子在工作目录下新建文件 slowServer.php<?phpsleep(5); // 5秒后才能返回请求echo 'done';开启服务

2020-10-29 15:45:35 281 1

原创 ThinkPHP6 源码分析之中间件分析

中间件从请求过程中可以看出,第一步就是加载的中间件。那么如何加载的呢?看下面这段代码$this->app->middleware让 app 实例访问属性 middleware?你会发现实例中并没有这个属性,那么访问一个不存在的属性会发生什么呢?它会去访问 __get 魔术方法,你有这个想法之后会在 Container 中发现这个魔术方法,最终它会去 make 创建对象,对于 make 的过程请到 解析 Request 章节查看。点此加入我的企鹅群创建 middleware 的过程中有

2020-10-28 21:05:48 445 1

原创 ThinkPHP5.1.x 框架源码分析之框架的灵魂

一、类的自动加载初始框架的灵魂,类的自动加载为什么说是框架灵魂呢,一般框架都会有类的自动加载,当引入文件很多的时候,就会需要用到。这一个也是很多人想去阅读源码时卡住的点源码阅读打开到入口文件 ../public/index.php 会看到这一段代码,此代码加载了 base.php 的核心文件// 加载基础文件 [ ../public/index.php]require __DIR__ . '/../thinkphp/base.php';在 base.php 中载入了一个 ThinkPH

2020-10-27 19:38:08 337

原创 简单分享下PHP如何优雅的分析 ThinkPHP 框架源码

简介在这里我说一下小技巧 如果要学习 ThinkPHP 框架源码,应该怎么操作!1、首先是 IDE在这里我推荐大家使用 PHPStorm。备注一下,支持正版PHPStorm 下载PHPStorm 激活方式这样阅读源码的时候,只需要点击一下就可以跳转到各个加载的文件2、阅读框架阅读框架前,希望各位小伙伴了解一下 设计模式,单例模式,工厂模式,注册树模式等等框架当中会有很多设计模式,提前阅读过会比较好理解。不会问题也不大,我文章会详细讲解到的3、了解容器需要了解容器或者说是概念, 容器,

2020-10-26 21:53:53 524 2

原创 PHP数据库编程之一MySQL优化策略概述

本文简单讲述了PHP数据库编程之MySQL优化策略。分享给大家供大家参考,具体如下:前些天看到一篇文章说到PHP的瓶颈很多情况下不在PHP自身,而在于数据库。我们都知道,PHP开发中,数据的增删改查是核心。为了提升PHP的运行效率,程序员不光需要写出逻辑清晰,效率很高的代码,还要能对query语句进行优化。虽然我们对数据库的读取写入速度上却是无能为力,但在一些数据库类扩展像memcache、mongodb、redis这样的数据存储服务器的帮助下,PHP也能达到更快的存取速度,所以了解学习这些扩展也是非常

2020-10-24 21:18:34 168 1

原创 php mysql PDO 查询操作的实例详解

这篇文章主要介绍了php mysql PDO 查询操作的实例详解的相关资料,希望通过本文能帮助到大家,需要的朋友可以参考下php mysql PDO 查询操作的实例详解1、建立连接持久性链接PDO::ATTR_PERSISTENT=>true2、捕捉错误3、事务的4、错误处理a. 静默模式(默认模式)使用 query()使用 prepare, bindParam和 execute [建议用,同时可以用添加、修改、删除]事物PDO常用方法:PDO

2020-10-23 20:17:11 372 2

翻译 对比下这4 个常见的 PHP 代码的性能

通常我会使用常规的、显而易见的 PHP 函数来编写代码来解决相应的问题。但对于其中一些问题,我遇到了特别提高性能的替代解决方案。在本文中,我想介绍其中的一些替代方案。如果你正在寻找在生产中进一步减少执行时间的可能性,这将非常有用。让我们来看看哪些 PHP 方法可能会被性能更好的方法取代,以及是否有任何成本或权衡。ℹ 所有这些方法都在本地 Web 服务器上使用 PHP 7.4 进行了测试我的 企鹅群1. 删除重复项你有一个包含重复项的大型数组,并且希望删除它们,以便只有一个具有唯一值的数组。?

2020-10-22 21:20:25 264 1

原创 PHP访问MySQL你用对了么?

前言大家都知道,slow query系统做的好不好,直接决定了解决slow query问题的效率。 一个数据库管理平台,拥有一个好的slow query系统,基本上就拥有了解锁性能问题的钥匙。但是今天主要分享的并不是平台,而是在平台中看到的奇葩指数五颗星的slow issue。好了,关子卖完,直接进入正题。症状数据库的慢SQL日志中发现了一堆如下慢查询:从我们的监控图上可以看到,每天不定时间段的slow query 总数在攀升,但是却看不到任何query 语句,这是我接触到的slow query

2020-10-21 20:25:34 123 1

原创 PHP进阶教程-PHP的协程怎么玩?这一篇带你搞定swoole协程

协程说复杂不复杂说难也不难,一句话可以概括:能提高并发,但不能加速任务,同步代码实现异步IO,异步非阻塞的代码块。协程是一种特殊函数,是一种可以挂起的函数,然后可以从挂起的地方重新恢复执行,一个线程内的多个协程是串行的,跟CPU处理进程一样,同一时刻只能一个协程在线程上运行,除非出让了控制权给别的协程运行。协程无法利用多核CPU因此协程只能解决并发问题,不能解决任务处理速度问题。协程就是把一个大任务再分成更小的片段,封装程一个函数,当其中一个协程需要IO阻塞的时候,主动挂起当前协程,把控制权交给其他协.

2020-10-20 21:42:28 351 1

原创 面试官:你知道PHP的核心特征—匿名函数吗?说一下

提出在匿名函数出现之前,所有的函数都需要先命名才能使用function increment($value){ return $value + 1;}array_map('increment', [1, 2, 3]);有的时候函数可能只需要使用一次,这时候使用匿名函数会使得代码更加简洁直观,同时也避免了函数在其他地方被使用array_map(function($value){ return $value + 1;}, [1, 2, 3]);定义和使用PHP 将闭包和

2020-10-19 22:06:17 79

原创 最近一次的PHP面试题记录,office已到手!

1、explain 具体哪些等级具体有 system、const、range、index、all2、MySQL 优化避免全表查询,首先应考虑在 where 及 order by 涉及的列上建立索引应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描 (可以将字段默认值设置为 0)应尽量避免在 where 子句中使用!= 或 <> 操作符,否则引擎将放弃使用索引而进行全表扫描应尽量避免在 where 子句中使用 or 来

2020-10-16 20:45:11 196 1

原创 面试官:高级 PHP 工程师必备的编码技巧及思维你都有,就你了!!!

好的开发者通常以代码质量来定义。在软件行业,写好的代码意味着在在测试,更新,扩展或者修复漏洞中省钱。本文,我将向你展示一些现实生活中技巧和想法的例子,来帮助你清理你的逻辑代码,重构它,让它变得更健壮和模块化。这些技巧将不仅仅帮助你重构你的旧代码,而且给你一些如何从现在开始写出简洁代码的好建议。什么是重构,为什么我们需要它?重构是指帮助我们写简洁代码的方法和步骤。这对其他可能阅读,扩展和不需要怎么编辑来复用我们代码的其他开发者来说是很重要的。下面的内容将向你展示一些重构逻辑代码,让它变得更好的例子。.

2020-10-15 20:32:14 217

原创 PHP 基于 Swoole 的微信扫码登录如何实现

随着微信的普及,扫码登录方式越来越被现在的应用所使用。它因为不用去记住密码,只要有微信号即可方便快捷登录。微信的开放平台原生就有支持扫码登录的功能,不过大部分人还是在用公众平台,所以扫码登录只能自行实现。这里基于微信公众平台的带参数临时二维码,并且结合 Swoole 的 WebSocket 服务实现扫码登录。大体流程如下:客户端打开登录界面,连接到 WebSocket 服务WebScoket 服务生成带参数二维码返回给客户端用户扫描展示的带参数二维码微信服务器回调扫码事件并通知开发者

2020-10-14 19:54:00 315

原创 PHP 之 MySQL 慢查询那点事,你知多少?

1、简介开启慢查询日志,可以让 MySQL 记录下查询超过指定时间的语句,通过定位分析性能的瓶颈,才能更好的优化数据库系统的性能。2、参数介绍slow_query_log 慢查询开启状态slow_query_log_file 慢查询日志存放的位置(这个目录需要 MySQL 的运行帐号的可写权限,一般设置为 MySQL 的数据存放目录)long_query_time 查询超过多少秒才记录,默认是 10 秒3、开启慢查询(1) 查看慢查询相关参数mysql> show variables

2020-10-13 21:37:13 180

原创 PHP之Swoole 学习笔记-用做饭的方式来理解协程

简介最近学习 swoole 接触到协程,记录一下我理解到的协程。文章比较白话,而且目前理解的还非常浅,写出自己的想法,请大佬们多多指点。协程协程可以简单理解为线程,只不过这个线程是用户态的,不需要操作系统参与,创建销毁和切换的成本非常低,和线程不同的是协程没法利用多核 cpu 的,想利用多核 cpu 需要依赖 Swoole 的多进程模型。—— swoole 协程一章我的理解可以把协程看成一道小学数学的一道题目:“合理安排时间”,来我们先做一道题目:小明下班后回家煮饭,煲汤需要 10 分钟,煮

2020-10-12 15:13:55 404 1

原创 PHP面试之HR喜欢问哪些与技术无关的问题

PHP面试时,除了技术领域,HR面试官还喜欢问一些与技术无关的问题,这些问题背后代表了什么?如何应对?这都是我们要思考的。首先这个行业中懂技术的 HR 占少数,自然 HR 关注的点一定是技术以外的内容。面试中排在最优先的问题称之为 “行为式问题”,就是要问到候选人参与过一些具体活动的事例,来了解这个人做事的一些特征,他的能力水平和素质状况。那这一点在之前一个问题中已经教大家利用 S.T.A.R. 方式来整理自己过往经历并且在面试中有结构地描述给面试官。除了这类问题以外 HR 其他问题中的也会瞧瞧的“.

2020-10-10 14:05:09 324

原创 说说在PHP中,MySQL如何防止SQL注入

方法一:mysql_real_escape_string – 转义 SQL 语句中使用的字符串中的特殊字符,并考虑到连接的当前字符集 !$sql = "select count(*) as ctr from users where username='".mysql_real_escape_string($username)."' andpassword='". mysql_real_escape_string($pw)."' limit 1";方法二:打开magic_quotes_gpc来防

2020-10-09 19:54:15 181 1

原创 2020最新PHP面试100题(番外篇)

1、Parse error: syntax error, unexpected T_STRING in /website/index.php on line 1818行语法错误,检查语法2、Warning:fopen(welcome.txt) [function.fopen]: failed to open stream: No such file or directory in /website/index.php on line 2没有找到welcome.txt文件,检查文件是否存在点击加入我的

2020-10-08 21:40:22 307 2

原创 2020最新PHP面试100题(三)

写几个魔术方法并说明作用?12345678910__call()当调用不存在的方法时会自动调用的方法__autoload()在实例化一个尚未被定义的类是会自动调用次方法来加载类文件__set()当给未定义的变量赋值时会自动调用的方法__get()当获取未定义变量的值时会自动调用的方法__construct()构造方法,实例化类时自动调用的方法__destroy()销毁对象时自动调用的方法__unset()当对一个未定义变量调用unset()时自动调用的方法__isset(

2020-10-08 21:17:55 1096 3

原创 2020最新PHP面试100题(二)

35、说说你对SVN的了解?优缺点?SVN是一种版本控制器,程序员开发的代码递交到版本服务器进行集中管理。SVN的优点:代码进行集中管理,版本控制容易,操作比较简单,权限控制方便。缺点:不能随意修改服务器项目文件夹。点击加入我的企鹅群36、怎么找到PHP.ini的路径?一般都在php的安装目录下,或者window系统的windows目录下。37、PHP加速模式/扩展? PHP调试模式/工具?Zend Optimizer加速扩展调试工具:xdebug38、你常用到的mysql命令?Sho

2020-10-07 20:42:10 459 1

原创 2020最新PHP面试100题(一)

一、什么是面向对象?主要特征是什么?面向对象是程序的一种设计方式,它利于提高程序的重用性,使程序结构更加清晰。主要特征:封装、继承、多态。二、SESSION 与 COOKIE的区别是什么,请从协议,产生的原因与作用说明?http无状态协议,不能区分用户是否是从同一个网站上来的,同一个用户请求不同的页面不能看做是同一个用户。SESSION存储在服务器端,COOKIE保存在客户端。Session比较安全,cookie用某些手段可以修改,不安全。Session依赖于cookie进行传递。禁用

2020-10-07 20:08:25 477 1

原创 PHP之探索MySQL 长连接、连接池

php连接mysql的方式,用的多的是mysql扩展、mysqli扩展、pdo_mysql扩展,是官方提供的。php的运行机制是页面执行完会释放所有该php进程中的所有资源的,如果有多个并发访问本地的测试页面 http://127.0.0.1/1.php 根据php跟web服务器的不同,会开相应的线程或者进程去处理该请求,请求完了会释放结果的。也就是php无法从语言层面从页面到页面之间传递一些数据,但是mysql_pconnect跟pdo中的ATTR, 设置array(PDO::ATTR_PERSISTEN

2020-10-06 22:09:09 418 2

原创 面试官:你对MySQL比较熟?那说说PHP连接MySQL数据库的几种方法吧!

1.最简单的方式-mysql(面向过程)<?php$con = mysql_connect("localhost","root","password");$select_db = mysql_select_db('test');if (!$select_db) { die("could not connect to the db:\n" . mysql_error());}//查询代码$sql = "select * from db_table";$res = mysql_

2020-10-06 15:02:41 191

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除