PHP

[PHP 技巧] 不要直接克隆对象,请使用深拷贝

声明:这篇文章的目的并不是让你停止使用 clone 关键字,而是让你作进一步理解它的用法,因为这部分的文档介绍不够清楚。

众所周知,PHP 的 clone 关键字用于克隆对象的所有属性。其背后的原理在于默认创建一个与原有对象的属性值完全一样的新对象,此外,也可以通过类的 __clone() 方法来实现自定义行为。

虽然该描述与我们的期望相符,但是,如果克隆的对象里面包含了对象类型的属性,可能会出现奇怪的结果。让我们看看具体的示例:

如何选择laravel的身份认证系统

最近经常有人问如何使用laravel的身份认证功能,因为laravel的身份认证方式比较多,laravel的作者最近专门写了一文章来解释说明,以下为译文:

laravel认证生态系统概述

Laravel提供了一些与身份验证相关的软件包。在继续之前,我们将回顾Laravel中的常规身份验证生态系统,并讨论每个软件包的预期目的。

首先,请考虑身份验证的工作原理。使用网络浏览器时,用户将通过登录表单提供其用户名和密码。如果这些凭据正确,则应用程序将在用户的会话中存储有关经过身份验证的用户的信息。发布给浏览器的cookie包含会话ID,以便对应用程序的后续请求可以将用户与正确的会话相关联。接收到会话cookie后,应用程序将基于会话ID检索会话数据,注意身份验证信息已存储在会话中,并将用户视为“已身份验证”。

当远程服务需要进行身份验证才能访问API时,通常不使用cookie,因为没有Web浏览器。而是,远程服务根据每个请求将API令牌发送到API。应用程序可以对照有效API令牌表验证传入令牌,并“认证”与该API令牌相关联的用户正在执行的请求。…

                

Nginx+php FastCGI到底是谁影响超时时间

需求

一个php程序要跑一段时间,但是时间不确定。

问题

当该php程序运行超过一段时间被强制断开连接。

PHP本身超时处理

在 php.ini 中,有一个参数 max_execution_time 可以设置 PHP 脚本的最大执行时间,但是,在 php-cgi(php-fpm) 中,该参数不会起效。真正能够控制 PHP 脚本最大执行时:

    

如何为开源PHP软件包做贡献

介绍

鉴于即将举行的Hacktoberfest,我想为初学者分享一些技巧,这些初学者可能想专门为PHP 软件包做出第一笔贡献。从我自己的经验来看,与“常规”(Laravel)应用程序相比,在一个程序包上工作可能看起来很艰巨。

这篇文章旨在为初学者贡献一些开源PHP软件包的指导。…

        

使用Composer时的PHP部署最佳实践

Composer是PHP应用程序的事实依赖管理器,最初在大约8年前于2012年3月发布。

在PHP中使用Composer可用于提高代码的可重用性,并使您的项目能够轻松地集成来自主要PHP Composer仓库Packagist的维护的PHP库。今天,我们将重点介绍一些部署最佳实践。

composer会变慢

这篇文章将重点介绍如何使Composer更快,以及在每次部署应用程序时无需重新安装Composer就可以安装软件包。

Magento是需要大量内存的Composer项目的一个示例。您能想象如果需要为每个部署进行composer安装时需要多少内存?Composer可能会因“内存不足”错误而失败,此错误将在此Stack Overflow帖子中进行介绍

尽管将软件包添加到项目很容易,但出于以下原因,在Amezmo,我们采用保守的方法添加新的项目依赖项。

  • 减慢初始 composer install
  • 每个composer软件包都会增加出现新安全问题的机会

最佳实践

这是不言而喻的。审核我们的composer.json文件,当然删除所有不需要的程序包引用。

第二个,这就是我发表这篇文章的原因,是要确保您使用以下标志运行composer。

composer
    --no-ansi \
    --no-interaction \
    --optimize-autoloader \
    --no-progress 
        

一文详解PHP的内存泄露

FPM 的黑魔法

首先,传统的跑在 FPM 下的 PHP 代码是没有“内存泄漏”一说的,所谓的内存泄漏就是忘记释放内存,导致进程占用的物理内存(附1)持续增长,得益于 PHP 的短生命周期,PHP 内核有一个关键函数叫做php_request_shutdown此函数会在请求结束后,把请求期间申请的所有内存都释放掉,这从根本上杜绝了内存泄漏,极大的提高了 PHPer 的开发效率,同时也会导致性能的下降,例如单例对象,没必要每次请求都重新申请释放这个单例对象的内存。(这也是Swoolecli方案的优势之一,因为 cli 请求结束不会清理内存)。…

优化 PHP 和 Laravel 以提高 Web 应用的性能

 

Laravel 有很多东西。但是快不是其中之一。让我们学习一些优化技巧,以加快运行速度!

自从 Laravel 诞生以来,没有一个 PHP 开发人员不受她的影响。他们是喜欢 Laravel 提供的快速开发的初级或中级开发人员,或者是由于市场压力而被迫学习 Laravel 的高级开发人员。

不管怎样,不可否认的是,Laravel 已经振兴了 PHP 生态系统(我确定,如果没有 Laravel,早就离开了 PHP 世界了)。

            

Laravel-admin发布2.0BETA版本

大家好,最近花了不少时间在 laravel-admin 的 2.0 版本的开发工作上面,目前开发工作基本完成,今天发布 BETA 版本,有兴趣的同学们可以尝试安装使用,如有遇到问题,可通过 Github issue 反馈。