首页
学习
活动
专区
圈层
工具
发布

为Symfony2和Redis正名,基于PHP的10亿请求周网站打造

以下为译文: image.png 有人说Symfony2像其它的复杂框架一样,很慢,但是我们认为这一切都取决用户的本身。本文将介绍基于Symfony2,每周执行10亿多个请求的应用的软件架构细节。...Symfony2监控—Monolog和Stopwatch 应用使用Monolog记录意料之外的行为,捕获错误信息。我们使用多个信道获取不同应用模块的分离的日志。...应用大概添加了50%的新功能,这些新功能基于CLI指令,主要用作管理或分析应用内部构件。 控制台组件妥善的处理命令语句或选项—你可以设置默认值,可选值或所需的值。...好的实践总是将这些恰当的记录为代码—你可以给命令和选项设置主要描述。命令通常是自我文档的,因为添加--help选项便能生成格式化的指令描述。...$ php app/console octivi:test-command --env=prod 想要更好的信息显示,添加-v选项。

5.8K50
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    如何在Ubuntu 14.04上将Symfony应用程序部署到生产环境中

    在“ 基本设置”下添加collation-server和character-set-server选项。...我们的应用程序是一个简单的待办事项列表,允许您添加和删除项目,并更改每个项目的状态。待办事项存储在MySQL数据库中。源代码可在GitHub上获得。 我们将使用Git检查应用程序代码。...这是通过重复我们刚刚运行的setfacl命令来完成的,但这次添加了该-d选项。...通过删除;行开头的符号取消注释该指令,并为您的应用程序添加适当的时区。在这个例子中我们将使用Europe/Amsterdam,但您可以选择任何支持的时区。...通过删除;行开头的符号取消注释该指令,并为您的应用程序添加适当的时区。在这个例子中我们将使用Europe/Amsterdam,但您可以选择任何支持的时区。

    14.8K20

    【PHP】Composer 介绍

    安装依赖包安装依赖包需要在指定项目的根路径执行下面的操作:composer install更新依赖包该命令仅限在项目根目录操作更新所有依赖包composer update更新指定依赖包composer update monolog/monolog更新多个指定依赖包...symfony/*移除依赖包移除指定依赖包composer remove monolog/monolog根据通配符匹配移除依赖包composer remove monolog/monolog symfony...componentssymfony/debug-bundle Provides a tight integration of the Symfony VarDumper...WordPress.amphp/log Non-blocking logging for PHP based on Amp and Monolog.只搜索包,可以添加...--only-name选项,如下所示composer search --only-name monolog执行命令的返回结果较多:图片根据通配符搜索依赖包composer search mono*案例如下

    2K10

    基于Docker的PHP开发环境

    多容器可以在添加组件时提供更好的模块化。因为每个容器包含了堆栈的一部分:Web、PHP、MySQL等,这样可以单独扩展每个服务或者添加服务,并且不需要重建所有的东西。...我们还要构建Symfony Docker镜像, 使用docker build命令: $ cd docker-symfony $ docker build -t symfony ....现在,可以使用它来运行你的Symfony工程了: $ cd SomeProject $ docker run -i -t -P -v $PWD:/srv symfony 我们来看看这一连串的选项分别是干嘛的...基本上你可以通过 docker run的-e选项在容器中设置环境变量,启动脚本会拿到环境变量,因此,如果你的DB名为some_project_dev, 你就可以这么运行容器: $ docker run...docker run -i -t -P \ -v $PWD:/srv \ -e DB_NAME=some_project_dev \ -e INIT=bin/setup 注意,-e选项可以在

    4.2K90

    你必须知道的 17 个 Composer 最佳实践(已更新至 22 个)

    库是一个可重用的包,需要作为一个依赖项进行添加 - 比如 symfony/symfony, doctrine/orm 或 elasticsearch/elasticsearch....而典型的项目是一个应用程序,要依赖于多个库。它通常不可重用(其他项目不需要它成为一个依赖项)。像电子商务网站、客户服务系统等类型的应用就是典型的例子。...比如创建了一个库,要使用 symfony/yaml 库进行 YAML 解析,就应这样写: "symfony/yaml": "^3.0 || ^4.0" 这表示该库能从 Symfony 3.x 或 4.x...Tip 9: 进行版本衍合或合并时不要合并 composer.lock 如果你在 composer.json (和 composer.lock)中添加了一个新依赖项,并且在该分支被合并前主分支中添加另一个依赖项...) 等 CI 构建结束 合并然后部署 有时需要一次升级多个依赖项,比如升级 Doctrine 或 Symfony。

    9K20

    Swagger+knife4j 易于整合SpringBoot的OpenAPI文档生成利器

    官方地址: https://swagger.io 2.Springboot集成Swagger2及常见配置 第一步:添加依赖 io.springfox...这里有很多选项供我们去配置。如果我们的项目有多个组,只需要创建多个Docket即可。这时候扫描的包换成每个组的包路径。...3.常用注解 @Api 标识一个java类型是文档类,用controller类的类名上 @ApiModel 表示一个实体类/模型文档,用在类名上; @ApiModelProperty 作用在属性上,添加属性描述...可以是某个类名,也可以是基本数据类型的引用类名,如Integer; example:字符串,参数值示例; @ApiImplicitParams value:@ApiImplicitParam类型数组,当方法有多个...,选择款神器—knife4j 首先我们来看下界面功能的对比,swagger-ui界面如下: 访问地址: http://localhost:8080/swagger-ui knife4j界面如下: 访问地址

    2.2K10

    如何使用APIDetector高效识别目标域名暴露的Swagger节点

    apidetector.git (右滑查看更多) 然后切换到项目目录中,使用pip命令安装requests库: cd apidetector pip install requests 工具参数选项...quiet:禁用Verbose输出(默认为Verbose模式); -ua, --user-agent:发送请求所使用的自定义用户代理; 风险分类 高危节点 '/swagger-ui.html', '/swagger-ui.../', '/swagger-ui/index.html', '/api/swagger-ui.html', '/documentation/swagger-ui.html', '/swagger/index.html...', '/api/docs', '/docs', '/api/swagger-ui', '/documentation/swagger-ui' (右滑查看更多) 中高危节点 '/openapi.json...Chrome/90.0.4430.212 Safari/537.36" (右滑查看更多) 扫描单个子域名: python apidetector.py -d example.com 从一个输入文件中扫描多个域名

    69410

    基于 Symfony 组件封装 HTTP 请求响应类

    Symfony HTTP Foundation 组件 关于这两个类的封装,我们可以基于 Symfony 提供的 HTTP Foundation 组件来实现,Symfony 本身是一个著名的 PHP MVC...框架,它提供了丰富的 PHP 组件集,可以独立于 Symfony 框架之外使用,你可以在这里看到 Symfony 提供的全部组件集:Symfony Components,这是 Symfony 作为框架之外对...: composer require symfony/http-foundation 下载完成后的扩展包会保存到 vendor/symfony/http-foundation 目录下,另外,也会在 composer.json...这三个类分别继承自 Symfony HTTP Foudation 组件的 Request、Response、Session 基类,这里,我们新增子类实现的目的是为了便于添加自定义逻辑。...类的构造函数,第一个参数是响应实体(默认是空字符串,这里是重定向响应,故而留空),第二个参数是响应状态码(默认是 200,这里是重定向响应,故而设置为 301),第三个参数是响应头(以关联数组方式支持传入多个响应头

    9.7K20
    领券