PHP

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 反馈。

PHP 8的 Attributes新特性介绍

从PHP 8开始,我们将能够使用Attributes。Attributes(在许多其他语言中也称为annotations)的目标是将元数据添加到类,方法,变量等中;以结构化的方式。

attributes的概念根本不是什么新概念,多年来,我们一直在使用docblock来模拟其行为。但是,通过添加attributes,我们现在有了该语言的一等公民来表示这种元数据,而不必手动解析docblock。

那它们长什么样呢?我们如何制作自定义attributes?有什么警告吗?这些是本文将要回答的问题。让我们深入!…

    

laravel如何自定义404,500等错误页面

laravel如何自定义404,500等错误页面

1.线上环境的话如果用户打开网页的话laravel框架自带的错误界面是非常丑陋的,关键是不美观这里我们自定义一下界面

2.在laravel项目的  resources目录下的views目录下新建一个目录叫做errors,
然后把在https://github.com/laravel/framework/tree/6.x/src/Illuminate/Foundation/Exceptions/views
目录下载的所有错误页面添加在目录中,可根据需要修改页面代码,或者从网上下载其它的静态或动态页面,如果是动态的记得在public目录中引用资源

 第二种方法

或者使用laravel框架提供的路由返回报错视图

Route::fallback(function (){
return view('404');
});

    

Laravel:如何让用户使用电子邮件或用户名登录

Laravel默认只允许用户使用其电子邮件地址登录。现在,如果要让您的用户使用电子邮件甚至用户名登录,该怎么办?

为此,您只需要更改Laravel默认身份验证代码中的某些代码即可。

开始吧。我认为您已经设置了Laravel项目并迁移了Laravel默认身份验证。如果您还没有编写命令php artisan make:auth,那么请执行php artisan migrate。…

加速你的laravel框架运行, 教你如何减少服务提供者的启动.

Laravel有一个很强大的功能,就是服务提供者,它使得开发者能很容易的便能调用各种服务,但这也使得框架变得臃肿,今天就教大家如何优化各种不必要的服务提供者.

  • 找到不需要启动的服务提供者. 执行php artisan package:discover或者composer dump-auto查看我们引导了什么服务提供者. 
  • 从这里可以看到我们所有自动启动的外部服务提供者,我们可以优化其中一些,
    • 比如encore/laravel-admin是一个后台,但实际上我们每一次请求都会启动这个,所以我们只需要判断url中出现admin才启动这个服务
    • 比如intervention/image实际上是一个图片处理包,我们也不需要每一次请求都启动它,只需要压缩,操作图片时才启动这个包,这时候就可以写一个Service类,在类的构造方式启动这个服务
  • 首先我们想要排除某个服务提供者,把它加入项目根目录下composer.json文件中的extra.laravel.dont-discover的数组中即可 
  • 如果我们不启动这些服务,但又使用的话,这时候就会出现不可意料的结果
  • 所以,这时候我们就需要按需启动服务提供者.比如只有在url包含有admin才启动encore/laravel-admin
  • 首先我们先查看这个包的根目录下的composer.json文件 
  • 这里它注册了服务提供者和门面,所以我们只需要手动注册这两个即可