>本文是从我们的姐妹网站之一CloudSpring共享的。如果您觉得很有帮助,请务必给他们访问!
本教程将向您展示如何使用Amazon DynamoDB作为PHP会话的存储设施。当您的应用程序利用弹性负载平衡和自动化服务时,此方法变得非常有用。您将需要启用Amazon AWS帐户使用EC2,Elastic Load Balancer和DynamoDB作为沿教程播放的先决条件。钥匙要点
- > Amazon DynamoDB可以用作PHP会话的存储设施,当应用程序利用弹性负载平衡和自动升级服务时,这特别有用。 >
- >弹性负载平衡器充当一个或多个虚拟服务器的前端,其中分发了请求。自动化允许系统启动更多的Web服务器克隆,当流量降低时关闭一些。 PHP会话数据应存储在虚拟服务器之外。一个选项是将会话存储在诸如DynamoDB之类的数据库中,该数据库是由Amazon管理的功能强大且快速的NOSQL数据库。 >官方PHP SDK的AmazondynamodB类可注册为会话经理。用于PHP的AWS SDK使开发人员更容易构建利用具有成本效益,可扩展和可靠的AWS Cloud的应用程序。
- 什么是弹性负载平衡器 弹性负载平衡器充当一个或许多虚拟服务器的前端。它接受请求并将其分发在虚拟服务器中。可以通过克隆机器模板(AMI)来创建虚拟服务器,也可以在需要时被破坏。处理能力如果您的应用程序可以通过动态添加或减少虚拟服务器来改变您的应用程序。
自动加入游戏时,系统还可以:
启动更多的Web服务器克隆,当 当流量下降到预定义的阈值以下时,关闭其中的一些
>终止不健康的实例,并在需要时替换- 我该怎么做?
- > 您的任何应用程序都可以在这种环境中工作吗?是的,如果满足两个关键要求:
- >由于动态创建虚拟服务器,因此服务器应仅包含应用程序代码而不包含任何数据。 DB服务很容易可用。 >
这是我们在此方面尝试解决的问题。
不做什么:粘性会话
粘性会话是将用户会话绑定到特定应用程序实例的Elastic Load Balancer服务的功能,因此会话期间来自用户的所有请求都将发送到同一虚拟服务器。会话cookie可以由负载平衡器或应用程序生成,但是:这被认为是不良习惯。理想的选择是将应用程序设计为无状态,但这并非总是可以的。
>将您的会话存储在数据库中
另一个选项是:将我们的会话存储在数据库中。它可能是应用程序或memcache实例或其他NOSQL数据库的外部SQL数据库。在这种情况下,DynamoDB似乎非常有趣,因为它是一个功能强大且快速的NOSQL数据库,它由亚马逊本身管理,并且可以从我们的虚拟服务器中访问。此外,官方PHP SDK的AmazondynamodB类已经有能力注册为会话经理。如果您从未听说过DynamoDB,我建议您观看此介绍性视频。
演示应用程序
我整理了一个简单的应用程序来测试整个机制,您可以从我们的GitHub存储库中下载源代码。我们将使用弹性负载平衡器和至少两个实例运行此应用程序。我们目前将不使用自动化。
<span>require_once 'lib/session.php'; </span><span>try { </span> <span>// Engine can be PHP or AmazonDynamoDB </span> <span>$session = new Session($config['session']['engine'], $config['session']['params']); </span><span>} catch (Exception $e) { </span> <span>exit($e->getMessage()); </span><span>} // end try</span>默认的引擎值是不需要参数的PHP。如果我们选择“ Amazondynamodb”引擎,则会话构造函数将执行一些其他代码:
<span>switch ($engine) { </span><span>case 'AmazonDynamoDB': </span><span>// Load AWS SDK </span><span>require_once 'AWSSDKforPHP/sdk.class.php'; </span><span>// Create a list of credential sets that can be used with the SDK. </span><span>CFCredentials<span>::</span>set($params['credentials']); </span><span>// Instantiate a DynamoDB client </span><span>$dynamodb = new AmazonDynamoDB(); </span><span>$dynamodb->set_region($params['region']); </span><span>// Instantiate, configure, and register the session handler </span><span>$this->handler = $dynamodb->register_session_handler(array( </span><span>'table_name' => $params['table_name'], </span><span>'lifetime' => $params['lifetime'], </span><span>)); </span><span>break;</span>首先,我们加载了必须已经安装并可以触及的AWS SDK,然后将我们的凭据加载到AWS环境中。从这一点上开始,我们可以使用AWS类,因此创建了AmazondynamodB的新实例,并使用我们的表所在的正确区域进行设置。最后,我们告诉我们的DynamoDB对象将自己注册为会话经理,传递了使用表的名称,这实际上就是我们所需要的。 config.php文件是我们要在此处使用要使用的引擎的应用程序,在此处保存了AWS凭据和DynamoDB设置。在index.php中,我还提供了一个小实用程序功能,如果我们不在本地服务器中,请获取当前正在运行的实例的名称。这对于检查会话是否在我们的服务器中保持一致很有用。
<span>function getServerName() { </span> <span>$host = $_SERVER['SERVER_NAME']; </span> <span>if ('localhost' != $host) { </span> <span>// Maybe we are on EC2, trying to catch the current instance ID </span> <span>$ch = curl_init('http://169.254.169.254/latest/meta-data/instance-id'); </span> <span>curl_setopt($ch, CURLOPT_FAILONERROR, true); </span> <span>curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); </span> <span>curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 2); </span> <span>if ($ret = curl_exec($ch)) { </span> <span>$host .= ' (instance ' . $ret . ')'; </span> <span>} // end if </span> <span>curl_close($ch); </span> <span>} // end if </span> <span>return $host; </span><span>} // end function</span>函数getServername()使用EC2元数据API查找实例的名称。 在车队上运行应用程序 为了测试此应用程序,我们需要在负载平衡器后面至少有两个Web服务器的机队。我使用的服务器是配备以下设备的Ubuntu GNU/Linux实例:
- apache Web服务器,
- php 5.3(命令行和apache模块), >
- 卷曲程序和PHP扩展,
- 梨包装管理器(需要轻松安装SDK) php的AWS SDK(我建议通过梨安装)。
- 如果您知道如何构建AMI,则可以从头开始构建自己的AMI。但是您也可以使用我准备并公开的一种:AMI-4B42443F。该计算机已经包含应用程序和所有其他依赖项的PHP源代码。一旦您准备好AMI……我们就可以! 初始化会话存储
输入“ test_sessions”作为表名称,然后选择一个称为“ ID”的字符串主键,键类型必须为“哈希”。如果选择另一个名称,则必须在config.php文件中复制它。对于读取和写入容量单位字段的“ 10”(例如,您的表速度有多快),这足以进行测试。
现在,您有一个NOSQL表,其中每一行具有强制性的ID字段,但是可以具有其他不同类型字符串,数字,字符串设置或数字设置的其他不同字段。 Session Manager对象将使用名为“数据”的字符串字段来存储会话变量和一个名为“到期”的数字字段,以用于会话的到期时间戳。
启动和配置服务器
>
设置负载平衡器
使用数据库和所有实例,我们现在可以设置前端负载平衡器。在EC2导航菜单中,在“网络和安全性”下选择“加载平衡器”,然后单击“创建负载平衡器”按钮。
摘要
仅此而已。我们介绍了AWS生态系统中的一个重要主题,但这仅仅是开始。例如,所有这些内容都是完全可以编程的:您可以添加自动升级并设计实例以自我配置,并从可信赖的地方下载AWS凭据和其他数据。或者,您可以使用云形成为整个基础架构创建可重复使用的模板。 检查的起点是AWS主页。现在,如果您完成的测试,请不要忘记终止所有内容,即使不开心的编码! 通过fotolia 图像 Amazon DynamoDB和PHP会话上的常见问题(FAQ)>
>如何使用Amazon DynamoDB和PHP会话实现负载平衡?负载平衡是管理服务器负载和确保最佳性能的关键方面。使用Amazon DynamoDB和PHP会话,您可以使用Amazon的弹性负载平衡(ELB)服务来实现这一目标。 ELB会自动跨多个目标(例如Amazon EC2实例,容器和IP地址)分发传入的应用程序流量。它可以处理单个可用性区域或多个可用性区域中的应用程序流量的不同负载。
>>将Amazon DynamoDB用于PHP会话有什么好处?用于PHP会议。它通过无缝可扩展性提供快速可预测的性能。您可以向上或向下缩放桌子以调整流量,而无需任何停机时间或绩效降低。 DynamoDB还提供内置的安全性,备份和还原,以及用于Internet级应用程序的内存中心。对于PHP,使开发人员更容易构建利用具有成本效益,可扩展和可靠的AWS云的应用程序。 SDK中包含的是AWS PHP库和代码示例,这些样本显示了如何使用AWS SDK用于PHP来利用AWS Services提供的所有功能,例如Amazon S3,Amazon EC2和DynamoDB。是否有具有PHP代码示例的常见DynamoDB?
有几个常见的代码示例用于使用PHP的DynamoDB。其中包括创建表格,将项目写入表格,从表中读取项目,更新表中的项目以及从表中删除项目。这些操作中的每一个都可以使用AWS SDK进行php。
>在哪里可以找到亚马逊商店的PHP脚本?这些脚本允许您将Amazon的服务集成到PHP应用程序中,提供诸如产品搜索和显示,购物车管理以及订单处理之类的功能。
>>是否有适用于具有PHP的DynamoDB的完整示例?是的,有完整的示例用于将DynamoDB与PHP一起使用。这些示例通常包括用于创建表格,将项目写入表格,从表中读取项目,更新表中的项目以及从表中删除项目的代码。它们通常还包括如何处理错误和异常的示例。
>在使用DynamoDB和PHP工作时,如何处理具有PHP的错误和异常,您可以处理错误和异常。使用Try-Catch块。当操作失败时,用于PHP的AWS SDK引发异常,您可以捕获这些异常以适合您的应用程序的方式处理它们。
>>如何使用DynamoDB和PHP?有几种方法可以通过DynamoDB和PHP优化性能。其中包括使用配置的吞吐量来管理容量,使用全局辅助索引加快查询,并使用DynamoDB加速器(DAX)提供内存内存。
以上是PHP主| Amazon DynamoDB:使用负载平衡器存储PHP会话的详细内容。更多信息请关注PHP中文网其他相关文章!

PHP用于构建动态网站,其核心功能包括:1.生成动态内容,通过与数据库对接实时生成网页;2.处理用户交互和表单提交,验证输入并响应操作;3.管理会话和用户认证,提供个性化体验;4.优化性能和遵循最佳实践,提升网站效率和安全性。

PHP在数据库操作和服务器端逻辑处理中使用MySQLi和PDO扩展进行数据库交互,并通过会话管理等功能处理服务器端逻辑。1)使用MySQLi或PDO连接数据库,执行SQL查询。2)通过会话管理等功能处理HTTP请求和用户状态。3)使用事务确保数据库操作的原子性。4)防止SQL注入,使用异常处理和关闭连接来调试。5)通过索引和缓存优化性能,编写可读性高的代码并进行错误处理。

在PHP中使用预处理语句和PDO可以有效防范SQL注入攻击。1)使用PDO连接数据库并设置错误模式。2)通过prepare方法创建预处理语句,使用占位符和execute方法传递数据。3)处理查询结果并确保代码的安全性和性能。

PHP和Python各有优劣,选择取决于项目需求和个人偏好。1.PHP适合快速开发和维护大型Web应用。2.Python在数据科学和机器学习领域占据主导地位。

PHP在电子商务、内容管理系统和API开发中广泛应用。1)电子商务:用于购物车功能和支付处理。2)内容管理系统:用于动态内容生成和用户管理。3)API开发:用于RESTfulAPI开发和API安全性。通过性能优化和最佳实践,PHP应用的效率和可维护性得以提升。

PHP可以轻松创建互动网页内容。1)通过嵌入HTML动态生成内容,根据用户输入或数据库数据实时展示。2)处理表单提交并生成动态输出,确保使用htmlspecialchars防XSS。3)结合MySQL创建用户注册系统,使用password_hash和预处理语句增强安全性。掌握这些技巧将提升Web开发效率。

PHP和Python各有优势,选择依据项目需求。1.PHP适合web开发,尤其快速开发和维护网站。2.Python适用于数据科学、机器学习和人工智能,语法简洁,适合初学者。

PHP仍然具有活力,其在现代编程领域中依然占据重要地位。1)PHP的简单易学和强大社区支持使其在Web开发中广泛应用;2)其灵活性和稳定性使其在处理Web表单、数据库操作和文件处理等方面表现出色;3)PHP不断进化和优化,适用于初学者和经验丰富的开发者。


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

MinGW - 适用于 Windows 的极简 GNU
这个项目正在迁移到osdn.net/projects/mingw的过程中,你可以继续在那里关注我们。MinGW:GNU编译器集合(GCC)的本地Windows移植版本,可自由分发的导入库和用于构建本地Windows应用程序的头文件;包括对MSVC运行时的扩展,以支持C99功能。MinGW的所有软件都可以在64位Windows平台上运行。

mPDF
mPDF是一个PHP库,可以从UTF-8编码的HTML生成PDF文件。原作者Ian Back编写mPDF以从他的网站上“即时”输出PDF文件,并处理不同的语言。与原始脚本如HTML2FPDF相比,它的速度较慢,并且在使用Unicode字体时生成的文件较大,但支持CSS样式等,并进行了大量增强。支持几乎所有语言,包括RTL(阿拉伯语和希伯来语)和CJK(中日韩)。支持嵌套的块级元素(如P、DIV),

安全考试浏览器
Safe Exam Browser是一个安全的浏览器环境,用于安全地进行在线考试。该软件将任何计算机变成一个安全的工作站。它控制对任何实用工具的访问,并防止学生使用未经授权的资源。

SublimeText3 英文版
推荐:为Win版本,支持代码提示!

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)