PHP

  • 如何在PHP中操作临时文件

    获取 PHP 的默认临时创建文件目录 学习过 Linux 操作系统的都会知道有一个目录是 /tmp 目录( Windows 中一般是:C:WindowsTemp ),它是用来存放系统的一些临时文件的,所以,这个目录也叫做临时文件目录。很多软件都会将一些临时保存的文件放在这个目录里面,包括一些缓存、一些临时生成的脚本之类的。PHP 在默认情况下也会将临时文件目录指向这个目录,包括 SESSION 文件之类的临时文件都会保存在这里。它可以在 php.ini 文件中通过 sys_tmp_dir 进行设置。 当然,在动态运行的 PHP 程序中,我们也可以通过一个函数来获得当前的临时文件目录。 prin…

    PHP 2021年5月27日
    0 15 0
  • 如何在PHP中操作临时文件

    获取 PHP 的默认临时创建文件目录 学习过 Linux 操作系统的都会知道有一个目录是 /tmp 目录( Windows 中一般是:C:WindowsTemp ),它是用来存放系统的一些临时文件的,所以,这个目录也叫做临时文件目录。很多软件都会将一些临时保存的文件放在这个目录里面,包括一些缓存、一些临时生成的脚本之类的。PHP 在默认情况下也会将临时文件目录指向这个目录,包括 SESSION 文件之类的临时文件都会保存在这里。它可以在 php.ini 文件中通过 sys_tmp_dir 进行设置。 当然,在动态运行的 PHP 程序中,我们也可以通过一个函数来获得当前的临时文件目录。 prin…

    PHP 2021年5月27日
    0 4 0
  • PHP Session ID的实现原理与实例

    Session作用   Session的根本作用就是在服务端存储用户和服务器会话的一些信息。典型的应用有:   1、判断用户是否登录。   2、购物车功能。 session 的工作机制: 为每个访问者创建一个唯一的 id (UID),并基于这个 UID 来存储变量。UID 存储在 cookie 中,亦或通过 URL 进行传导。 PHPSESSIONID的生产算法原理: 1、hash_func = md5 / sha1 #可由php.ini配置 2、PHPSESSIONID = hash_func(客户端IP + 当前时间(秒)+ 当前时间(微妙)+ PHP自带的随机数生产器) 从以上hash_…

    PHP 2021年5月27日
    0 5 0
  • PHP 引用的概念

    什么是引用? 在 PHP 中引用意味着用不同的名字访问同一个变量内容。它不是C的指针,保存的并不是内存地址,无法进行指针运算。引用只是符号表的别名。就像 Unix 系统中的硬链接, Windows 系统中的快捷方式。 上面是官方手册中的原文,怎么说呢,引用其实和我们印象中的C里面的指针并不是相同的概念。指针是针对真实内存的操作,引用是针对指向这个内存的符号表的操作。还是从操作系统的快捷方式来说,快捷方式是可以删的,这就是PHP的引用。而C不仅删了快捷方式,还把原文件也给删了,这就是C的指针操作。 // 引用不是指针 $a = 1; $b = &$a; echo $a, ‘===’, $…

    PHP 2021年5月27日
    0 4 0
  • 再谈PHP未来之路

    这门语言现在到底处于生命周期的哪个阶段?其定位到底是怎样的?诸如 PHP7、Swoole 的出现到底能给 PHP 带来怎样的变化? 当我们拿 PHP 和 java 进行比较的时候,我们往往就两门语言本身进行比较,如一个是弱类型一个是强类型,一个是数组打天下一个是各种数据结构,甚至连花括号是不是换行写都会被讨论一番。但它们真正的区别并非这些。 当我们谈论一门语言的时候,我们是在谈它的生态。 “生态”一词在百度百科上的解释是:“生态一词,现在通常是指生物的生活状态。指生物在一定的自然环境下生存和发展的状态,也指生物的生理特性和生活习性。生态(Eco-)一词源于古希腊字,意思是指家(house)或者…

    PHP 2021年5月27日
    0 4 0
  • PHP中include和require的使用详解

    在PHP中,有两种包含外部文件的方式,分别是include和require。他们之间有什么不同呢? 如果文件不存在或发生了错误,require产生E_COMPILE_ERROR级别的错误,程序停止运行。而include只产生警告,脚本会继续执行。 这就是它们最主要的区别,其他方面require基本等同于include。 被包含文件先按参数给出的路径寻找,如果没有给出目录(只有文件名)时则按照 include_path 指定的目录寻找。如果在 include_path 下没找到该文件则 include 最后才在调用脚本文件所在的目录和当前工作目录下寻找 如果定义了路径不管是绝对路径还是当前目录的…

    PHP 2021年5月27日
    0 5 0
  • PHP 请求上下文相关总结

    我们首先来了解下什么是上下文。在我们写文章,写句子时,都会考虑一个观点或者内容的前后逻辑,转承启合,而在这个观点前后的内容就可以看成是它的上下文内容。它包含了语境的意味在里面,其实代码世界中的上下文也是一样的意思,本身 Context 这个单词就是环境、背景的意思。 接下来,我们来说说请求上下文又是什么呢?比如说我们要使用PHP来请求一个链接地址,通常我们会使用 curl 来进行请求,但是 curl 的配置其实是比较复杂的,所以我们在简单使用的情况下会使用 file_get_contents() 这种函数来快捷地请求链接。不过,可能很多人并不知道或者说没怎么使用过它的上下文参数。其实,使用了上…

    PHP 2021年5月27日
    0 5 0
  • PHP中断言函数的使用详解

    原来一直以为断言相关的函数是 PHPUnit 这些单元测试组件提供的,在阅读手册后才发现,这个 assert() 断言函数是 PHP 本身就自带的一个函数。也就是说,我们在代码中进行简单的测试的时候是不需要完全引入整个单元测试组件的。 assert() 断言函数 assert(1==1); assert(1==2); // assert.exception = 0 时,Warning: assert(): assert(1 == 2) // assert.exception = 1 时,Fatal error: Uncaught AssertionError: 验证不通过 很明显,第二段代码无…

    PHP 2021年5月27日
    0 6 0
  • 详解PHP中的数据库连接持久化

    PHP中的数据库连接持久化 数据库的优化是我们做web开发的重中之重,甚至很多情况下其实我们是在面向数据库编程。当然,用户的一切操作、行为都是以数据的形式保存下来的。在这其中,数据库的连接创建过程有没有什么可以优化的内容呢?答案当然是有的,Java等语言中有连接池的设定,而PHP在普通开发中并没有连接池这种东西,在牵涉到多线程的情况下往往才会使用连接池的技术,所以PHP每次运行都会创建新的连接,那么这种情况下,我们如何来优化数据连接呢? 什么是数据库连接持久化 我们先来看下数据库连接持久化的定义。 持久的数据库连接是指在脚本结束运行时不关闭的连接。当收到一个持久连接的请求时。PHP 将检查是否…

    PHP 2021年5月27日
    0 4 0
  • 详解PHP中的数据库连接持久化

    PHP中的数据库连接持久化 数据库的优化是我们做web开发的重中之重,甚至很多情况下其实我们是在面向数据库编程。当然,用户的一切操作、行为都是以数据的形式保存下来的。在这其中,数据库的连接创建过程有没有什么可以优化的内容呢?答案当然是有的,Java等语言中有连接池的设定,而PHP在普通开发中并没有连接池这种东西,在牵涉到多线程的情况下往往才会使用连接池的技术,所以PHP每次运行都会创建新的连接,那么这种情况下,我们如何来优化数据连接呢? 什么是数据库连接持久化 我们先来看下数据库连接持久化的定义。 持久的数据库连接是指在脚本结束运行时不关闭的连接。当收到一个持久连接的请求时。PHP 将检查是否…

    PHP 2021年5月27日
    0 5 0
  • PHP 生成器的使用详解

    什么是生成器? 听着高大上的名字,感觉像是创造什么东西的一个功能,实际上,生成器是一个用于迭代的迭代器。它提供了一种更容易的方式来实现简单的对象迭代,相比较定义类实现Iterator接口的方式,性能开销和复杂性大大降低。 说了半天不如直接看看代码更直观。 function test1() { for ($i = 0; $i < 3; $i++) { yield $i + 1; } yield 1000; yield 1001; } foreach (test1() as $t) { echo $t, PHP_EOL; } // 1 // 2 // 3 // 1000 // 1001 就是…

    PHP 2021年5月26日
    0 4 0
  • PHP缓存系统APCu扩展的使用

    想必大家都使用过 memcached 或者 redis 这类的缓存系统来做日常的缓存,或者用来抗流量,或者用来保存一些常用的热点数据,其实在小项目中,PHP 也已经为我们准备好了一套简单的缓存系统,完全能够应付我们日常普通规模站点的开发。这一套扩展就是 APCu 扩展。 APCu 扩展 APCu 扩展是 APC 扩展的升级,APC 扩展已经不维护了。这两套扩展其实都是基于 opcode caching 。也就是 PHP 自身的 opcode 来实现的缓存能力。 APCu 的安装就和普通的 PHP 扩展一样,非常简单,最主要的是这个扩展还非常的小。不管下载还是安装都是秒级可以完成的。所以说能够非…

    PHP 2021年5月26日
    0 5 0
  • PHP中的错误及其处理机制

    在PHP的学习过程中,我们会接触到两个概念,一个是错误,一个是异常。啥玩意?他们不是一个东西嘛?如果接触过Java、C#之类的纯面向对象语言的同学,可能对异常是没有什么问题,毕竟所有的问题都可以try…catch来解决。但是像PHP这种从面向过程发展到面向对象的语言来说,错误和异常就是两个完全不同的东西了。 我们将用一系列的文章来彻底的搞懂PHP中的错误和异常到底是怎么回事,有哪些处理这些错误和异常的机制,我们应该如何对待它们。 什么是错误? 错误,一般是由PHP本身的因素所导致的问题,错误的语法、环境的配置不当等都会引起错误。错误和php.ini文件当中的error_report…

    PHP 2021年5月26日
    0 4 0
  • 详解PHP中的命名空间

    命名空间其实早在PHP5.3就已经出现了。不过大部分同学可能在各种框架的使用中才会接触到命名空间的内容,当然,现代化的开发也都离不开这些能够快速产出的框架。这次我们不从框架的角度,仅从简单的代码角度来解析一下命名空间的概念和使用。 首先,我们要定义命名空间是个什么东西。 其实就像操作系统的目录一样,命名空间就是为了解决类似于操作系统中同一个文件夹不能有相同的文件名一样的问题。假设我们只有一个文件,一个目录,那么在这个目录中,是不能有两个完全相同的文件的。如果有这样名称完全相同的文件,那么操作系统也不知道我们到底应该打开的是哪一个文件。同理,在一个PHP文件中,我们也不能起相同名称的函数或者类名…

    PHP 2021年5月26日
    0 5 0
  • PHP中垃圾回收相关函数的使用

    之前我们已经学习过 PHP 中的引用计数以及垃圾回收机制的概念。这些内容非常偏理论,也是非常常见的面试内容。而今天介绍的则是具体的关于垃圾回收的一些功能函数。关于之前的两篇介绍文章,大家可以到文章底部查看。 再谈循环引用以及强制清理循环引用 我们为什么要强调 “循环引用” 呢?其实,在默认情况下,我们直接 unset() 掉一个没有被其他变量引用的变量时,就会让这个变量的引用计数变为0。这时,PHP 默认的垃圾回收机制就会直接清除掉这个变量。比如: $a = new stdClass; $b = new stdClass; $c = new stdClass; echo memory_get_…

    PHP 2021年5月26日
    0 4 0