首页 » Web前端 » php拜访sqlserver技巧_Serverless 解惑函数计算若何访问 SQL Server 数据库

php拜访sqlserver技巧_Serverless 解惑函数计算若何访问 SQL Server 数据库

访客 2024-11-10 0

扫一扫用手机浏览

文章目录 [+]

访问 SQL Server 数据库是指在函数打算中通过编写代码调用数据库驱动库通过 TCP 协议实现对数据库进行的插入、查询等操作。
常日函数打算中运行的不同函数实例之间是不共享状态的,对付构造化的数据可以通过数据库的形式进行持久化以实现状态共享。
由于用户函数运行在函数打算的 VPC 中,而用户的数据库运行在用户所属的 VPC 中,以是在函数打算平台访问数据库会涉及到跨 VPC 访问的场景,下面我们先来先容一下其事情机制。

事情机制

访问 SQL Server 的事理、事情机制与访问 Mysql 数据库完备相同,本文不再重复阐述,更详细的内容请参考 访问 Mysql 数据库 中的事情机制章节。

php拜访sqlserver技巧_Serverless 解惑函数计算若何访问 SQL Server 数据库

配置与函数编写公共配置创建专有网络VPC登录 VPC掌握台。
参阅 VPC 搭建专有网络 创建VPC和交流机。
创建安全组

在安全组掌握台 新建安全组,点击 创建安全组,设置安全组名称,网络类型选择 专有网络,并选择刚才创建的专有网络。

php拜访sqlserver技巧_Serverless 解惑函数计算若何访问 SQL Server 数据库
(图片来自网络侵删)
创建与配置 SQL Server 实例创建适宜业务需求的云数据库 SQL Server 版实例可以参考 云数据库 SQL Server 版。

把稳:创建云数据库 SQL Server 版实例须要选择和函数打算配置相同的 VPC 实例,可以配置和函数打算不同的可用区的交流机,由于相同的 VPC 实例下不同可用区交流机内网是互通的。

创建成功后,在实例信息页面左侧的导航栏中单击数据安全性。
单击 添加白名单分组 。
在弹出的对话框中,将函数打算所在的 VPC 网络的网段地址配置在白名单输入框中。
登录 VPC 掌握台,在专有网络列表中找到运用所在的 VPC,单击该 VPC 的名称进入专有网络详情页面。
复制运用所在的 VPC 的 IPv4 网段。
在组内白名单设置框中粘贴该 VPC 的 IPv4 网段地址,然后单击确定。
末了访问 SQL Server 数据库 host 为实例的内网地址,可以登录阿里云掌握台查看:函数打算配置 VPC

把稳:函数打算做事所在区域与公共配置中创建的资源所在区域同等。

在 函数打算掌握台 创建做事。
创建做事步骤请参考文章 做事的增编削查【专有网络配置】选项中,选择您在步骤一中创建的 VPC 网络,交流机、安全组。
【权限配置】选项中,选择【新建角色】,点击【点击授权】,在角色快速创建页面,点击【赞许授权】。
这步的操作是付与函数打算对 ENI 的操作权限,函数打算访问 VPC 中资源须要的权限请参考文章 配置函数打算访问 VPC 内的资源点击确定,新建做事完毕。
函数编写与调试

下面演示 Python3 与 php7.2 开拓措辞访问 SQL Server 数据库函数示例创建:

利用 Fun 工具在建立存放代码和依赖模块目录下安装依赖和项目支配。

Python3建立一个目录,用于存放代码和依赖模块,在该目录下新建 template.yml 文件,例如 /tmp/code/template.yml,内容为:ROSTemplateFormatVersion: '2015-09-01' Transform: 'Aliyun::Serverless-2018-04-03' Resources: SQL-Server-test: Type: 'Aliyun::Serverless::Service' Properties: Description: This is SQL-Server service Role: 'acs:ram::xxxxx:role/fc-public-test' LogConfig: Project: xxx Logstore: xxx VpcConfig: VpcId: vpc-xxx VSwitchIds: - vsw-xxx SecurityGroupId: sg-xxx InternetAccess: true python-test: Type: 'Aliyun::Serverless::Function' Properties: Handler: 'index.handler' Runtime: python3 Timeout: 10 MemorySize: 128 CodeUri: './'在该目录下创建 Funfile 文件内容为:RUNTIME python3 RUN fun-install pip install pymssql实行fun install命令安装依赖:$ fun install using template: template.yml start installing function dependencies without docker 安装过程。



Install Success在函数根目录下新建代码文件,例如 /tmp/code/index.py:# -- coding: utf-8 -- import pymssql def handler(event, context): conn = pymssql.connect(host='rm-xxx.sqlserver.rds.aliyuncs.com', user='xxx, password='xxx', database='xxx', charset='utf8') cursor = conn.cursor() cursor.execute('SELECT FROM inventory WHERE quantity > 152') result = '' for row in cursor: result += 'row = %r\n' % (row,) conn.close() return result利用 fun 工具支配:$ fun deploy using template: template.yml using region: cn-hangzhou using accountId: 3743 using accessKeyId: Ptgk using timeout: 60 支配过程。


function python-test deploy success service SQL-Server-test deploy success登录掌握台,即可看到干系的做事、函数被创建成功,且触发实行可以返回精确的结果。
PHP7.2建立一个目录,用于存放代码和依赖模块,在该目录下新建 template.yml 文件,例如 /tmp/code/template.yml,内容为:ROSTemplateFormatVersion: '2015-09-01' Transform: 'Aliyun::Serverless-2018-04-03' Resources: SQL-Server-test: Type: 'Aliyun::Serverless::Service' Properties: Description: This is SQL-Server service Role: 'acs:ram::xxx:role/fc-public-test' LogConfig: Project: xxx Logstore: xxx VpcConfig: VpcId: vpc-xxx VSwitchIds: - vsw-x'x'x'x SecurityGroupId: sg-xxx InternetAccess: true php-test: Type: 'Aliyun::Serverless::Function' Properties: Handler: 'index.handler' Runtime: php7.2 Timeout: 10 MemorySize: 128 CodeUri: './' EnvironmentVariables: ODBCINI: /code/.fun/root/etc/odbc.ini ODBCSYSINI: /code/.fun/root/opt/microsoft/msodbcsql17/etc在该目录下创建 Funfile 文件内容为:RUNTIME php7.2 RUN apt-get update && apt-get install -y apt-transport-https apt-utils RUN curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add - RUN curl https://packages.microsoft.com/config/debian/8/prod.list > /etc/apt/sources.list.d/mssql-release.list RUN fun-install apt-get install unixodbc-dev RUN fun-install apt-get install msodbcsql17实行fun install命令安装依赖:$ fun install using template: template.yml start installing function dependencies without docker 安装过程。



Install Success在函数根目录下新建代码文件,例如 /tmp/code/index.php:<?php function handler($event, $context) { try { $conn = new PDO("sqlsrv:Server=rm-xxx.sqlserver.rds.aliyuncs.com;Database=xxx","xxx","xxx"); // set the PDO error mode to exception $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $conn->query("set names utf-8"); $sql="SELECT FROM inventory WHERE quantity > 152"; $result = $conn->prepare($sql); $result->execute(); print($result); return ("Connection successed."); } catch (PDOException $e) { return ("Connection failed: " . $e->getMessage()); } }利用 fun 工具支配:$ fun deploy using template: template.yml using region: cn-hangzhou using accountId: 3743 using accessKeyId: Ptgk using timeout: 60 支配过程。


function php-test deploy success service SQL-Server-test deploy success登录掌握台,即可看到干系的做事、函数被创建成功,且触发实行可以返回精确的结果。
把稳事变创建的函数须要设置两个环境变量:ODBCINI: /code/.fun/root/etc/odbc.iniODBCSYSINI: /code/.fun/root/opt/microsoft/msodbcsql17/etc实行fun install命令安装依赖后,修正 .fun/root/etc/odbc.ini 文件中 Driver 值指向.fun/root/opt/microsoft/msodbcsql17/lib64/目录下的文件,如图!
php环境中须要利用 pdo_sqlsrv 扩展编译可以参考 函数打算 php runtime 编译非内置的扩展 文档末了可以下载已经编译好的 pdo_sqlsrv 扩展。
总结

通过本文先容可以快速实现函数打算访问 SQL Server 数据库。

利用函数打算带来的上风:

无需采购和管理做事器等根本举动步伐,只需专注业务逻辑的开拓,可以大幅缩短项目交付韶光和人力本钱;供应日志查询、性能监控、报警等功能快速排查故障;免运维,毫秒级别弹性伸缩,快速实现底层扩容以应对峰值压力,性能精良;本钱极具竞争力;加入我们团队先容

阿里云函数做事是一个全新的,支持事宜驱动编程模式的打算做事。
他帮助用户聚焦自身业务逻辑,以 Serverless的办法构建运用,快速的实现低本钱,可扩展,高可用的系统,而无需考虑做事器等底层根本举动步伐的管理。
用户能够快速的创建原型,同样的架构能随业务规模平滑伸缩。
让打算变得更高效,更经济,更弹性,更可靠。
无论小型创业公司,还是大型企业,都受益个中。
我们的团队正在迅速扩展,爱才若命。
我们想探求这样的队友:基本功踏实。
既能阅读论文追踪业界趋势,又能快速编码办理实际问题。
严谨的,系统化的思维能力。
既能整体考虑业务机会,系统架构,运维本钱等诸多成分,又能掌控设计/开拓/测试/发布的完全流程,预判并掌握风险。
好奇心和义务感驱动。
乐于探索未知领域,不仅是梦想家,也是践行者。
坚韧、乐不雅观、自傲。
能在压力和困难中看到机会,让事情充满乐趣!
如果您对云打算充满激情亲切,想要构建一个有影响力打算平台和生态体系,请加入我们,和我们一起实现梦想!

职位描述

构建新一代 Serverless 打算平台,包括:

设计和实现完全可扩展的前端系统,包括身份验证/权限管理,元数据管理,流量掌握,计量计费,日志监控等等设计和实现弹性可靠的后端系统,包括资源调度,负载均衡,容错处理等等丰富易用的 SDK/Tools/CLI/掌握台用户需求驱动,追踪业界趋势,利用技能推动业务的发展职位哀求算法/数据构造/操作系统等根本知识踏实,精良的逻辑思维能力。
至少节制一门编程措辞。
例如 Java/Go/C/C#/C++。
有大规模、高可用分布式系统开拓履历者优先。
有 Web/Mobile Backends/Microservice 开拓履历者优先。
良好的沟通能力和团队互助精神,有一定的组织折衷能力。
本科及以上学历3 年以上事情履历通过“阿里巴巴编码规范” 认证的同学优先录取,认证地址:https://edu.aliyun.com/certification/cldt02简历提交

yixian.dw AT alibaba-inc.com

“阿里巴巴云原生技能圈关注微做事、Serverless、容器、Service Mesh 等技能领域、聚焦云原生盛行技能趋势、云原生大规模的落地实践,做最懂云原生开拓者的技能圈。

标签:

相关文章

extphp_pdo技巧_php之pdo应用实例

三个类:PDO类:数据库连接、实行SQL语句PDOStatement:处理结果集PDOException:处理非常一、PDO的开启...

Web前端 2024-12-19 阅读0 评论0