PHP Web 服务优化和测试方法

标签 php sql-server

我正在使用 PHP 开发一个访问 MSSQL 数据库的 Web 服务,我有几个关于处理大量请求的问题。

  1. 我实际上并不知道什么是“高流量”,我不知道我的服务是否会遇到“高流量”,但是这方面的优化主要归因于服务器处理速度和数据库访问速度?

  2. 目前,当向服务器发送请求时,我会执行以下操作:

    • 打开数据库连接
    • 处理请求
    • 返回数据

    无论如何我可以跨多个请求“缓存”这个数据库连接吗?只要同时处理每个请求,数据库就会保持有效。

  3. 我可以存储用户 session ID 并限制特定 session 每小时的请求数量吗?

  4. 如何创建“虚拟”客户端来向网络服务器发送请求?我想我可以在 for 循环或其他东西中发送垃圾邮件请求吗?更好的方法?

谢谢你的建议

最佳答案

  1. 您永远不知道何时会出现高流量。高流量可能来自您的搜索引擎排名、撰写您的网络服务帖子的博客或任何其他不可预见的随机事件。你最好准备好扩大规模。通过扩展,我主要不是指增加更多的处理能力,而是首先优化你的代码。常见的性能问题是:

    • 未优化的 SQL 查询(您真的需要实际获取的所有数据吗?)
    • 太多的 SQL 查询(尽量不要在循环中执行查询)
    • 未优化的数据库(检查您的索引)
    • 交易安全(您的交易速度快吗?请记住,调用数据库交易时所有传入请求都需要同步。如果您有很多请求,这很容易导致服务缓慢。)
    • 不必要的数据库调用(如果您的访问权限是只读的,请尝试缓存信息)
    • 前端中的不必要数据(用户真的需要您提供的所有数据吗?您的服务提供的数据是否比前端使用的多?)
  2. 当然可以缓存。您确实应该缓存不会随每次请求而改变的只读数据。有一个有用的blogpost on PHP caching techniques .您可能还需要考虑您选择的框架的缓存包或使用独立的 php 缓存库。

  3. 您可以限制服务使用,但我不建议通过 session ID、IP 地址等来执行此操作。更新这些很容易,然后您的保护就会失败。如果您有经过身份验证的用户,那么您可以像 Google 那样限制每个帐户的请求(对每个用户的所有公开可用服务使用 API key )

  4. 要进行 HTTP 负载和性能测试,您可能需要考虑像 Siege 这样的工具,这正是您所期望的。

我希望已经回答了你所有的问题。

关于PHP Web 服务优化和测试方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21156027/

相关文章:

php - php中使用表单提交更新表记录

php - 如何从下拉列表中检索值到 Yii 的 Controller 中?

c# - Sql Server 中的慢速选择查询从表中返回 6000 万条记录中的 1300 万条记录

SQL:将具有开始/结束的行扩展为单独的行

sql - 通过搜索 SQL Server 中的所有表来查找字符串

php - jquery 序列化方法的多种形式不起作用

php - 停止表单提交?

PHP 计算两个时区之间的时差(以小时为单位)

SQL 按列索引更新

sql-server - 为什么如果表中不存在列,MS Sql Server 会在表不存在时引发错误之前引发错误?