PHP执行超时错误解决办法

在调试一个php脚本时遇到504超时错误,架构是nginx+PHP-FPM,这里备忘一下超时设置。 错误: Fatal error: Maximum execution time of 30 seconds exceeded nginx设置 nginx层面是通过fastcgi_read_timeout这个参数来决定的。PHP FastCGI Server(PHP-FPM)的响应时间限制。这里改为300秒,具体根据需求设定。 location ~ \.php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_read_timeout 300; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } php设置 php可以使用set_time_limit设置允许脚本运行的时间,单位为秒。如果超过了此设置,脚本返回一个致命的错误。默认值为30秒(设置0为不限制时间),或者是在php.ini的max_execution_time被定义的值,如果此值存在。 使用ini_set('max_execution_time', '300');设置执行时间,或修改php.ini ; Maximum execution time of each script, in seconds ; http://php.

PHP应用简单env配置

在部署PHP应用时,一些环境变量(配置)处于安全等考虑,不能将其放到版本管理中。像Laravel是放到.env中,后续会单独写PHP dotenv使用,这里我们先实现一个简易版本。 env.php 放到应用根目录下,.gitignore添加env.php排除项。 方便起见,可以新建 env.example.php作为基础配置参考。 1 2 3 4 5 6 7 8 9 10 11 12 13 <?php $variables = [ 'APP_NAME' => 'mangoblog', 'APP_ENV' => 'test', 'APP_DEBUG' => 'error', 'APP_URL' => 'https://blog.mango.im/' ]; foreach ($variables as $key => $value) { putenv("$key=$value"); } helpers.

Go项目标准目录结构

这是Go应用程序项目的基本布局。不是核心Go开发团队定义的官方标准;但是,这是Go生态系统中的一组常见的历史和新兴项目布局模式。其中一些模式比其他模式更受欢迎。它还具有许多小的增强功能,以及任何足够大的实际应用程序共有的几个支持目录。 如果您想学习Go,或者您自己构建PoC或玩具项目,则此项目布局实在是太过分了。从一个非常简单的事情开始(一个main.go文件绰绰有余)。随着项目的增长,请记住,确保您的代码结构合理非常重要,否则最终将导致混乱的代码具有很多隐藏的依赖关系和全局状态。当有更多的人从事项目时,您将需要更多的结构。在那时候,重要的是要引入一种管理软件包/库的通用方法。当您拥有一个开源项目时,或者当您知道其他项目从项目存储库中导入代码时,拥有私有(aka内部)包和代码就很重要。克隆存储库,保留您需要的内容,然后删除其他所有内容!仅仅因为它在那里并不意味着您必须全部使用它。这些模式均未在每个项目中使用。甚至供应商模式也不是通用的。 有了Go 1.14,Go模块终于可以投入生产了。除非您有特定的原因不使用Go Modules,否则请使用Go Modules;如果这样做,则无需担心$ GOPATH和项目放置位置。回购中的基本go.mod文件假定您的项目托管在Github上,但这不是必需的。模块路径可以是任何东西,尽管第一个模块路径组件的名称中应带有点(当前版本的Go不再强制使用该点,但是,如果您使用的是稍旧的版本,则在构建失败时不会感到惊讶)它)。如果您想了解更多信息,请参见问题37554和32819。 该项目布局是有意通用的,并且不会尝试施加特定的Go包结构。 这是社区的努力。如果看到新的模式,或者认为需要更新现有模式之一,则打开一个问题。 如果需要命名,格式和样式方面的帮助,请先运行gofmt和golint。另外,请务必阅读以下Go代码样式指南和建议: https://talks.golang.org/2014/names.slide https://golang.org/doc/effective_go.html#names https://blog.golang.org/package-names https://github.com/golang/go/wiki/CodeReviewComments Style guideline for Go packages (rakyll/JBD) 有关其他背景信息,请参见转到项目布局。 有关命名和组织软件包以及其他代码结构建议的更多信息: GopherCon EU 2018: Peter Bourgon - Best Practices for Industrial Programming GopherCon Russia 2018: Ashley McNamara + Brian Ketelsen - Go best practices.

使用Composer组织PHP应用

过去对于php小应用开发,如果不基于框架,包管理一般都比较粗犷,使用composer来管理,不仅结构清晰,用起来也方便许多。 新建项目composer-example 项目目录下新建composer.json,内容如下: 1 2 3 4 5 { "require": { "monolog/monolog": "^1.25" } } 然后终端执行 composer install 执行完成后,目录结构如图: 下面开始应用开发,目录结构如图: composer.json 文件内容更新为 1 2 3 4 5 6 7 8 9 10 { "require": { "monolog/monolog": "^1.25" }, "autoload": { "psr-4": { "App\\": "app/" } } } 执行:

博客迁移到netlify

最近抽时间将博客从WordPress迁到hugo,基本到达了比较理想的写作方式(一次编写,到处发布)。 hugo作为本地调试生成静态页面,代码放github私有仓库,网站构建和部署在netlify。 这样即使本地不装hugo也可以随时发布了,唯一不满意一点netlify CDN速度较慢。 具体部署方法,参见hugo官网文档:Host on Netlify