• 关于 函数-查看函数 的搜索结果

回答

如何查看PHP版本? Php的版本控制一直也是一个比较棘手的问题,因为版本不同导致有许多功能不能很好的实现,所以当程序上传到空间的时候一定要对版本进行有效的控制,这样可以避免不必要的麻烦产生。那么如何查看当前你的php版本呢?下面提供两种方法帮你查看你的php版本。 使用phpinfo()函数,该函数就是用来显示php服务器的配置信息,在你的环境下创建一个php文件,在里面数据下面代码,然后执行就会打印出下面结果,可以清楚的看到,你当前php的版本,已经php、apache、mysql等配置信息。 <?php     Phpinfo(); ?> 使用phpsersion()函数,这个函数的原型是string phpversion(void);返回的一个string,本函数是返回php版本信息,创建一个php文件,输入以下代码,就可以在浏览器中看到返回的php的版本信息了。 <?php     echo phpversion(); ?> ------------------------- 用户根据自己的php版本选择包内对应的dll ------------------------- 回 3楼(kideny) 的帖子 小站 无所谓了 主要是有其他应用

小柒2012 2019-12-02 01:03:37 0 浏览量 回答数 0

回答

Re用了.net的SDK我调用的API里面居然是空的 这个帖子可以删除了。。。。他们都调用了最后一个四个参数的构造函数。 ------------------------- Re用了.net的SDK我调用的API里面居然是空的 构造函数不是有四个吗,我基本上是用的第二个: public OssClient ( string endpoint, string accessId, string accessKey); 这里第一个参数是oss的访问地址为 http://oss.aliyuncs.com/,accessId和accessKey都是在控制台里有个AccessKey管理,进去后查看到的。 其实第一个参数是不用输入的,最新的SDK里默认就是这个地址。 ------------------------- Re用了.net的SDK我调用的API里面居然是空的 前三个构造函数都调用了第四个构造函数的。。。。所以都是可以用的 ------------------------- Re用了.net的SDK我调用的API里面居然是空的 哪里报错?新建Client的时候?还是获取的时候? 另外报什么错呢?

englistname 2019-12-02 02:16:39 0 浏览量 回答数 0

回答

楼主好!您登录到主机控制面板里,左侧的PHP函数设置 开启禁用的参数就应该可以了。这些参数默认是关闭的。 ------------------------- 回 3楼(hearr) 的帖子 您好!一般是第一个。您可以试试。 ------------------------- 回 6楼(hearr) 的帖子 您好!您试一下把三函数都开启再看看.如果还是有问题,您可以在会员中心左侧里的"我要提问"里反馈给工程师协助您进一步查看原因.

阿里云支持与服务 2019-12-01 23:38:20 0 浏览量 回答数 0

海外云虚拟主机包年25元/月起

海外独享虚拟主机全面上线,助力构建海外网站,提升公司国际形象;全球有效覆盖,超高性价比;建站入门首选,助力出口,适合跨境贸易企业。

问题

函数计算怎么 创建服务

boxti 2019-12-01 21:47:59 1072 浏览量 回答数 0

问题

AWS Lambda执行时间在本地大于10秒但小于1秒

kun坤 2019-12-26 14:39:13 1 浏览量 回答数 0

回答

前言 本文旨在通过 快速部署一个 wordpress 网站到阿里云 函数计算 平台 这个示例来展示 serverless web 新的开发模式, 包括 FUN 工具一键初始化 NAS, 同步网站到 NAS, 一键部署等能力, 展现函数计算的开发敏捷特性、自动弹性伸缩能力、免运维和完善的监控设施。 相关参考文档: https://yq.aliyun.com/articles/640912 1.1 DEMO 概述 DEMO 示例效果入口: http://hz.mofangdegisn.cn 账号: fc-test-user 密码: fc-test-pwd DEMO 示例工程地址: fc-wordpress 开通服务 免费开通函数计算, 按量付费,函数计算有很大的免费额度。 免费开通文件存储服务NAS, 按量付费 1.2 解决方案 image 如上图所示, 当多个用户通过对外提供的 url 访问web服务的时候,每秒的请求几百上千都没有关系, 函数计算平台会自动伸缩, 提供足够的执行实例来响应用户的请求, 同时函数计算提供了完善的监控设施来监控您的函数运行情况。 1.3 Serverless 方案与传统自建 web 方案对比 ITEM 成本 稳定性 基于 VM 方案 使用 ecs.t5-lc1m1.small, 22.8元/月 服务器和数据库在同一台VM, 均无主备容灾,同时该规格的主机本身性能弱 轻量应用服务器 60元/月(1vCPU 1GB 1Mbps 20GB[ssd]) 服务器和数据库在同一台VM, 均无主备容灾,同时该规格的主机本身性能弱 函数计算 sqlite3 版本约为 1元/月 mysql 版本大约 26元/月 高 函数计算完整费用详情: 每月前 100 万次函数调用免费, 每月前 400000(GB*秒) 费用免费, 函数的内存可以设置为 128M 或者 256M, 因此对于一个一个月访问量低于 100 万次的网站, 该项是免费的 对于低成本的网站, 假设一个月的产生的公网流量为 1GB, 0.8元 NAS, US$0.06/GB/Month, 网站大小为 50M, 即使按 1G 计算, 0.42元 RDS mysql 最基本的单机版本, 25元/月 函数计算计费 | NAS 定价 如上所述, 在低成本网站领域, 函数计算具有十分明显的成本优势,同时还保持了弹性能力,以后业务规模做大以后并没有技术切换成本(可能需要做的只是更换一个更强的关系型数据库), 同时财务成本增长配合预付费也能保持平滑。低成本网站变成高可用高性能网站如丝般顺滑, 高性能网站详情可以参考文末 FAQ 中的 Q1 问题。 函数计算运行 PHP 框架原理 在具体操作部署之前, 先简单梳理一遍函数计算运行 PHP 框架原理 2.1 传统服务器 PHP 运行原理 原理示意图image.png A simple nginx confimage.png 从上面原理示意图我们可以看出,Web 服务器根据 conf 中 location将 PHP 脚本交给 php-fpm 去解析,然后将解析后的结果返回给 client 端 2.2 FC 驱动 PHP 工程原理 image 函数计算的执行环境实例相当于传统 web 服务的 Apache/Nginx 用户函数相当于实现 Apache/Nginx 的 conf 中 location 用户将 Web 网站部署在 NAS,然后挂载 NAS 到函数的执行环境, 比如下面代码中 /mnt/auto 目录 对于 WordPress 入口函数代码就是这么简单: index.php 其中函数计算为用户提供了一个 $GLOBALS['fcPhpCgiProxy'] 对象用来和 php-fpm 进行交互,对PHP 工程中的 php 文件进行解析,该对象提供了两个重要的接口: requestPhpCgi requestPhpCgi($request, $docRoot, $phpFile = "index.php", $fastCgiParams = [], $options = []) $request: 跟 php http invoke 入口的参数一致 $docRoot: Web 工程的根目录 $phpFile: 用于拼接 cgi 参数中的 SCRIPT_FILENAME 的默认参数 $fastCgiParams: 函数计算内部尽量根据 $request给您构造 default cgi params, 但是如果您不是想要的,可以使用$fastCgiParams覆盖一些参数 (reference: cgi) $options: array类型,可选参数, debug_show_cgi_params 设为 true ,会打印每次请求 php 解析时候的 cgi 参数, 默认为 false ;readWriteTimeout 设置解析的时间, 默认为 5 秒 如果您有兴趣, 可以了解下函数计算 PHP Runtime: PHP 入口函数 PHP 执行环境 案例操作步骤 准备条件 免费开通函数计算, 按量付费,函数计算有很大的免费额度。 免费开通文件存储服务NAS, 按量付费 有一个域名, 比如 abc.com, 并将域名 CNAME 解析到函数计算(FC) 对应的 region 如您想在杭州的 region 部署 wordpres 网站, 则将 abc.com CNAME 解析到 12345.cn-hangzhou.fc.aliyuncs.com, 其中 12345 是您的 accountId 3.1 安装最新的 Fun 工具 安装版本为8.x 最新版或者10.x 、12.x nodejs 安装 funcraf 3.2 Clone 工程 git clone https://github.com/awesome-fc/fc-wordpress.git 3.3 根据需要使用的数据库进入不同的目录 复制 .env_example 文件为 .env, 并且修改 .env 中的信息为自己的信息 如果使用 mysql 数据库, 参考章节 3.3.1 如果使用 sqlite3 数据库, 参考章节 3.3.2 3.3.1 使用 mysql 数据库 进入目录 fc-wp-mysql fun nas init fun nas info fun nas init: 初始化 NAS, 基于您的 .env 中的信息获取(已有满足条件的nas)或创建一个同region可用的nas 如果你没有修改 templata.yml 中的配置 service名字, 那么则可以进入下一步; 如果有修改, 会在当前目录生成新的目录 .fun/nas/auto-default/{serviceName} (fun nas info 可以列出新的目录), 将默认目录下的 .fun/nas/auto-default/fc-wp-mysql/wordpress 的wordpress目录拷贝到 .fun/nas/auto-default/{serviceName} 下, 同时可以删除目录 .fun/nas/auto-default/fc-wp-mysql/wordpress 上传 wordpress 网站到 NAS fun nas sync fun nas ls nas:///mnt/auto/ fun nas sync: 将本地 NAS 中的内容(.fun/nas/auto-default/fc-wp-mysql)上传到 NAS 中的 fc-wp-mysql 目录 fun nas ls nas:///mnt/auto/: 查看我们是否已经正确将文件上传到了 NAS 3.3.2 使用 sqlite3 数据库 进入目录 fc-wp-sqlite fun nas init fun nas info fun nas init: 初始化 NAS, 基于您的 .env 中的信息获取(已有满足条件的nas)或创建一个同region可用的nas 如果你没有修改 templata.yml 中的配置 service名字, 那么则可以进入下一步; 如果有修改, 会在当前目录生成新的目录 .fun/nas/auto-default/{serviceName} (fun nas info 可以列出新的目录), 将默认目录下的 .fun/nas/auto-default/fc-wp-sqlite/wordpress 的wordpress目录拷贝到 .fun/nas/auto-default/{serviceName} 下, 同时可以删除目录 .fun/nas/auto-default/fc-wp-sqlite/wordpress 本地完成安装过程, 初始化 sqlite3 数据库 在目录 .fun/nas/auto-default/fc-wp-sqlite/wordpress 中输入命令: php -S 0.0.0.0:80 修改 host 文件,添加 127.0.0.1 hz.mofangdegisn.cn linux/mac : vim /etc/hosts windows7: C:\Windows\System32\drivers\etc 其中 hz.mofangdegisn.cn 是您预先准备的域名 通过浏览器输入 hz.mofangdegisn.cn, 这个时候没有mysql数据库设置页面,完成 wordpress 安装过程 成功安装以后, 这个时候, .fun/nas/auto-default/fc-wp-sqlite/wordpress/wp-content 下面应该有一个 database 的目录, ls -a 查看, 应该有 .ht.sqlite 这个 sqlite3 数据库文件 回退 host 文件的修改 注: 中间修改 host 的目的是初始化 sqlite3 数据库的时候, base site url 是提前准备的域名, 而不是 127.0.0.1 上传 wordpress 网站到 NAS fun nas sync fun nas ls nas:///mnt/auto/ fun nas sync: 将本地 NAS 中的内容(.fun/nas/auto-default/fc-wp-sqlite)上传到 NAS 中的 fc-wp-sqlite 目录 fun nas ls nas:///mnt/auto/: 查看我们是否已经正确将文件上传到了 NAS 3.4 部署函数到FC平台 接下来将函数部署到云平台: 修改 index.php 中的 $host 中的值 修改 template.yml LogConfig 中的 Project, 任意取一个不会重复的名字即可 修改 template.yml 自定义域名为自己提前准备好的域名 执行 fun deploy 登录控制台 https://fc.console.aliyun.com,可以看到service 和函数已经创建成功, 并且 service 也已经正确配置。 通过浏览器打开自己之前配置的域名, 比如本例中的 hz.mofangdegisn.cn mysql 版本数据库, 可以直接跟传统的 wordpress 一样,直接进入安装过程 sqlite3 版本数据库, 由于之前已经完成初始化,可以直接进入网站首页或网站后台 FAQ Q1: 函数计算能开发高性能高可用网站吗? A: 可以, 使用函数计算的单实例多并发功能和高性能数据库 单实例多并发 选择高性能关系型数据库,比如高可用的云数据库PolarDB 有必要再加上这些优化: 预留实例消除冷启动 + 预付费优化成本 极速型 NAS OSS 对象存储 + CDN 来存储和分发静态资源 目前 PHP Runtime 并不支持单实例多并发, 使用 Custom Runtime,可以将基于传统模式 nginx + php-fpm + mysql 开发的网站直接简单无缝迁移到函数计算平台,示例工程 customruntime-php 使用OSS对Wordpress进行图片动静分离 Q2: 使用低成本 sqlite3 版本的网站, 冷启动第一次打开很慢怎么办? A: 用一个 timer trigger 的函数 keep warm Q3: 使用低成本 sqlite3 版本的网站, 能支持多大的qps? A: 由 sqlite3 数据库性能决定, 这边有一些压测结果: image image 每次压力增大时候, 都有些冷启动,时间慢点,但是支持从压测结果来看支持 50 QPS 是没有疑问的, 是足够支持一些中小网站的。 Q4: 使用其他语言基于函数计算开发 serverless 网站可以吗? A: 可以, 比如 python: https://yq.aliyun.com/articles/603249 , 或者直接使用 custom runtime, 内置了 java、python 和 node, Custom Runtime 用户手册 , Custom Runtime 使用集锦

1934890530796658 2020-03-27 17:54:50 0 浏览量 回答数 0

回答

楼主您好, 您可以通过如phpinfo()函数的输出结果,查看php_curl,php_openssl的模块是否启用喔。 或安装一个php探针也可以查看php的安装信息喔。 请参考: http://php.net/manual/zh/function.phpinfo.php ------------------------- 回 3楼(pzzhj) 的帖子 您好, 上图中的“curl支持”,应该意思是已经启用了php_curl模块喔。 您也可以在探针的信息页中,查看一下有没有“SSL”字样的支持信息哩。

dongshan8 2019-12-01 23:24:39 0 浏览量 回答数 0

回答

在函数计算服务使用 Java 编程,需要定义一个 Java 函数作为入口。Java 运行环境根据是否支持 HTTP 触发器分为 普通函数入口 和 HTTP 触发器函数入口 两种函数入口,为函数设置 HTTP 触发器后的函数入口形式会不同,这是为了方便处理发来的 HTTP request 请求并允许用户返回自定义 HTTP header。其中 普通函数入口 又分为 处理函数入口 和 initializer入口。 本文对 普通函数入口 和 HTTP 触发器函数入口 进行详细介绍: 普通函数入口 处理函数入口 StreamRequestHandler PojoRequestHandler initializer 入口 HTTP 触发器函数入口 Java 代码打包 普通函数入口 处理函数入口 用户在使用 Java 编程时,必须要实现函数计算提供的接口类,对于普通函数入口目前有 2 个预定义接口可选择: StreamRequestHandler以流的方式接受调用输入event和返回执行结果,用户需要从inputStream中读取调用函数时的输入,处理完成后把函数执行结果写入到outputStream中来返回。 PojoRequestHandler通过泛型的方式,用户可以自定义输入和输出的类型,但是它们必须是POJO类型。 StreamRequestHandler 一个最简单的处理函数定义如下: package example; import com.aliyun.fc.runtime.Context; import com.aliyun.fc.runtime.StreamRequestHandler; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; public class HelloFC implements StreamRequestHandler { @Override public void handleRequest( InputStream inputStream, OutputStream outputStream, Context context) throws IOException { outputStream.write(new String("hello world").getBytes()); } } 1. 包名/类名 包名和类名可以是任意的,但是需要与创建函数时的 “Handler” 字段相对应:上面的例子包名是 “example”,类名是 “HelloFC”,那么创建函数时指定的 Handler 为 example.HelloFC::handleRequest,”Handler” 的格式为 {package}.{class}::{method}。 实现的接口 用户的代码中必须要实现函数计算预定义的接口。上面的例子中实现了StreamRequestHandler,其中的 inputStream 参数是调用函数时传入的数据,outputStream 用于返回函数的执行结果。 context参数 context 参数中包含一些函数的运行时信息(例如 request id/临时 AK 等)。其类型是 com.aliyun.fc.runtime.Context。 返回值 实现StreamRequestHandler接口的函数通过outputStream参数返回执行结果 引入接口库 其中用到的com.aliyun.fc.runtime这个包的依赖可以通过下面的 pom.xml 引用: com.aliyun.fc.runtime fc-java-core 1.3.0 通过 maven 仓库 可以获取fc-java-core最新的版本号。 在创建函数之前,用户需要将代码及其依赖的 fc-java-core 打包成 jar。关于如何打包,请参见 Java 代码打包。 打包成 jar 后就可以使用 Fun 或者控制台上传代码,以 Fun 为例: 在项目根目录创建一个 template.yml 的文件: ROSTemplateFormatVersion: '2015-09-01' Transform: 'Aliyun::Serverless-2018-04-03' Resources: FunDemo: Type: 'Aliyun::Serverless::Service' javademo: Type: 'Aliyun::Serverless::Function' Properties: Handler: example.HelloFC::handleRequest Runtime: java8 CodeUri: './example.jar' 这个 template.yml 的含义如下:声明一个名为 FunDemo 的 服务,并在这个服务下,再声明一个名为 javademo 的 函数,配置函数入口为 example.HelloFC::handleRequest,以及函数的 runtime 为 java8。并且,我们指定了 CodeUri 为 ./example.jar。在部署时,Fun 会将 CodeUri 指定的目录或文件打包上传。更多的配置规则 请参考。 示例代码包是示例中的 hello world 代码打包成的 jar 包,您可以直接使用 示例代码包 进行测试。 使用 Fun 部署: fun deploy 执行成功时,会看到相关日志: using region: cn-hangzhou using accountId: ***********3557 using accessKeyId: ***********r3Ra using timeout: 300 Waiting for service FunDemo to be deployed... Waiting for function javademo to be deployed... Waiting for packaging function javademo code... package function javademo code done function javademo deploy success service FunDemo deploy success 然后就可以登录控制台查看或直接调用了。 PojoRequestHandler 一个最简单的处理函数定义如下: // HelloFC.java package example; import com.aliyun.fc.runtime.Context; import com.aliyun.fc.runtime.PojoRequestHandler; public class HelloFC implements PojoRequestHandler<SimpleRequest, SimpleResponse> { @Override public SimpleResponse handleRequest(SimpleRequest request, Context context) { String message = "Hello, " + request.getFirstName() + " " + request.getLastName(); return new SimpleResponse(message); } } // SimpleRequest.java package example; public class SimpleRequest { String firstName; String lastName; public String getFirstName() { return firstName; } public void setFirstName(String firstName) { this.firstName = firstName; } public String getLastName() { return lastName; } public void setLastName(String lastName) { this.lastName = lastName; } public SimpleRequest() {} public SimpleRequest(String firstName, String lastName) { this.firstName = firstName; this.lastName = lastName; } } // SimpleResponse.java package example; public class SimpleResponse { String message; public String getMessage() { return message; } public void setMessage(String message) { this.message = message; } public SimpleResponse() {} public SimpleResponse(String message) { this.message = message; } } 准备调用的输入文件: { "firstName": "FC", "lastName": "aliyun" } 使用 fcli 调用结果: invk hello-java -f /tmp/a.json {"message":"Hello, FC aliyun"} initializer 入口 无论您的函数使用流式输入还是通过泛型的方式自定义输入和输出,当需要在 Java runtime 中添加 initializer 接口时,都需在原有的基础上额外实现 initializer 预定义的接口。 initializer预定义接口如下: package com.aliyun.fc.runtime; import java.io.IOException; public interface FunctionInitializer { /** * The interface to handle a function compute initialize request * * @param context The function compute initialize environment context object. * @throws IOException IOException during I/O handling */ void initialize(Context context) throws IOException; } 一个简单的流式输入的函数和 initializer 结合的 demo 如下: package aliyun.serverless.test.example; import com.aliyun.fc.runtime.Context; import com.aliyun.fc.runtime.FunctionComputeLogger; import com.aliyun.fc.runtime.StreamRequestHandler; import com.aliyun.fc.runtime.FunctionInitializer; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; public class InitializerAndStreamRequest implements StreamRequestHandler, FunctionInitializer { @Override public void initialize(Context context) { FunctionComputeLogger logger = context.getLogger(); logger.debug(String.format("RequestID is %s %n", context.getRequestId())); } @Override public void handleRequest(InputStream input, OutputStream output, Context context) throws IOException { FunctionComputeLogger logger = context.getLogger(); logger.debug(String.format("RequestID is %s %n", context.getRequestId())); output.write(new String("hello world!").getBytes()); output.flush(); } } 针对 InitializerAndStreamRequest 中新增加的 initialize 方法即是 initializer 接口,特性如下: 包名/类名 initializer 所属包名和类名和处理函数一致,都可以是任意的。”initializer” 的格式同为 {package}.{class}::{method},与 “handler” 不同的是 handler 中的 method 为 handleRequest,initializer 的 method 为 initialize。根据定义可知此示例的 initializer 为 aliyun.serverless.test.example.InitializerAndStreamRequest::initialize。 实现的接口 用户的代码中必须要实现函数计算预定义的接口。上面示例中 initializer 接口实现了FunctionInitializer,initializer 接口只有一个 context 参数。 context参数 context 参数中包含一些函数的运行时信息(例如 request id/临时 AK 等)。其类型是 com.aliyun.fc.runtime.Context。 返回值 实现FunctionInitializer接口的函数无返回结果。 泛型的方式输入的函数和 initializer 结合的 demo 如下: package aliyun.serverless.test.example; import com.aliyun.fc.runtime.Context; import com.aliyun.fc.runtime.PojoRequestHandler; import com.aliyun.fc.runtime.FunctionInitializer; import com.aliyun.fc.runtime.FunctionComputeLogger; public class InitializerAndPojoRequest implements FunctionInitializer,PojoRequestHandler<SimpleRequest, SimpleResponse> { @Override public void initialize(Context context) { FunctionComputeLogger logger = context.getLogger(); logger.debug(String.format("RequestID is %s %n", context.getRequestId())); } @Override public SimpleResponse handleRequest(SimpleRequest request, Context context) { FunctionComputeLogger logger = context.getLogger(); logger.debug(String.format("RequestID is %s %n", context.getRequestId())); String message = "Hello, " + request.getFirstName() + " " + request.getLastName(); return new SimpleResponse(message); } } HTTP 触发器函数入口 HTTP 触发器函数接口 HTTP 触发器的简单示例 HTTP 触发器支持传统web应用 关于 HTTP 触发器 的使用请参考:HTTP 触发器 HTTP 触发器函数接口 函数计算提供基于 Servlet 协议的 HTTP 触发器入口,具体接口形式如下: public interface HttpRequestHandler { /** * The entrance function of fc http trigger * @param request The servlet request * @param response The servlet response * @param context The fc context * @throws IOException If IO exception happened * @throws ServletException If servlet exception happened */ public void handleRequest(HttpServletRequest request, HttpServletResponse response, Context context) throws IOException, ServletException; } 使用 HTTP 触发器需将 fc-java-core 库版本升级到 1.3.0 及以上。 HTTP 触发器的简单示例 package com.aliyun.fc.example; import java.io.IOException; import java.io.OutputStream; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import com.aliyun.fc.runtime.Context; import com.aliyun.fc.runtime.HttpRequestHandler; public class Hello implements HttpRequestHandler { public void handleRequest(HttpServletRequest request, HttpServletResponse response, Context context) throws IOException, ServletException { String requestPath = (String) request.getAttribute("FC_REQUEST_PATH"); String requestURI = (String) request.getAttribute("FC_REQUEST_URI"); String requestClientIP = (String) request.getAttribute("FC_REQUEST_CLIENT_IP"); response.setStatus(200); response.setHeader("header1", "value1"); response.setHeader("header2", "value2"); String body = String.format("Path: %s\n Uri: %s\n IP: %s\n", requestPath, requestURI, requestClientIP); OutputStream out = response.getOutputStream(); out.write((body).getBytes()); out.flush(); out.close(); } } 1. HttpServletRequest 函数计算 HTTP 触发器的接口直接使用标准的 Servlet 协议。 用户的请求会封装成HttpServletRequest对象,用户请求参数、请求header等均可通过此对象获取。 除此之外,函数计算在HttpServletRequest中预封装了一些属性, 可通过 getAttribute 方法来获取, 具体包括: FC_REQUEST_PATH 获取请求的 Path FC_REQUEST_URI 获取请求的 URI FC_REQUEST_CLIENT_IP 获取请求的 ClientIP HttpServletResponse 用户可通过标准的HttpServletResponse协议对象来返回响应 header 和 body. context参数 context 参数中包含一些函数的运行时信息(例如 request id/临时 AK 等)。其类型是 com.aliyun.fc.runtime.Context。 HTTP 触发器支持传统web应用 基于 Servlet 协议的传统 web 应用能很方便的迁移到函数计算平台,目前支持的主流框架包括 Spring 、 SpringBoot 、 Struts2 等。以下示例如何通过函数计算提供的 fc-java-common 库来加载 web 应用. 打包您的 web 工程,生成 demo.war 包 上传 demo.war 包到 OSS,比如为 demo-bucket 下的 demo.war 创建函数,并设置函数初始化入口和函数入口。 函数示例代码如下: package com.aliyun.fc.example; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import com.aliyun.fc.runtime.Context; import com.aliyun.fc.runtime.FcAppLoader; import com.aliyun.fc.runtime.FunctionComputeLogger; import com.aliyun.fc.runtime.FunctionInitializer; import com.aliyun.fc.runtime.HttpRequestHandler; public class HelloWeb implements FunctionInitializer, HttpRequestHandler { private FcAppLoader fcAppLoader = new FcAppLoader(); private String ossEndPoint = "YourOSSEndPoint"; private String bucket = "YourOSSBucket"; private String key = "YourWarName"; private String userContextPath = "/2016-08-15/proxy/{YourServiceName}/{YourFunctionName}"; @Override public void initialize(Context context) throws IOException { FunctionComputeLogger fcLogger = context.getLogger(); fcAppLoader.setFCContext(context); // Load code from OSS fcAppLoader.loadCodeFromOSS(ossEndPoint, bucket, key); // Init webapp from code fcAppLoader.initApp(userContextPath, HelloWeb.class.getClassLoader()); } @Override public void handleRequest(HttpServletRequest request, HttpServletResponse response, Context context) throws IOException, ServletException { try { fcAppLoader.forward(request, response); } catch (Exception e) { e.printStackTrace(); } } } 引用 Maven 库 com.aliyun.fc.runtime fc-java-core 1.3.0 com.aliyun.fc.runtime fc-java-common 2.2.2 Java 代码打包 使用 maven 打包jar 使用 IDEA 打包jar 使用 maven 打包 jar 在 pom.xml 中添加 maven-assembly-plugin 插件 maven-assembly-plugin 3.1.0 jar-with-dependencies false make-assembly package single org.apache.maven.plugins maven-compiler-plugin 1.8 1.8 打包 mvn package 执行完毕后,生成的 jar 会被存放在 target 目录下。 使用 maven 打包 jar,并将依赖以 jar 的形式存放在 /lib 目录中 随着项目依赖的增加,jar 的体积会变得越来越大。而用户上传的 jar 或者 zip 代码,在执行前,首先会被解压缩,然后才会被加载、执行。因此在刚才的两种实现中,存在的一个问题是我们打包的 jar 中包含了大量的 class 文件,这无疑会增加解压缩的时间,进而增加函数的首次启动时间。 一个更好的实践是将第三方依赖以 jar 的形式,存放于 /lib 目录。 这里提供一种使用 maven-dependency-plugin 实现的方案: org.apache.maven.plugins maven-dependency-plugin copy-dependencies prepare-package copy-dependencies ${project.build.directory}/classes/lib runtime 执行完 mvn package,打包好的 jar 的目录结构为: /.class lib/*.jar 使用 IDEA 打包 jar 配置导出 jar 包的选项: java1 java2 java3 验证打包结果 rockuw-MBP:hello-java (master) $ ls -lrth total 6520 -rw-r--r-- 1 rockuw staff 3.2M Aug 31 21:03 hellofc.jar rockuw-MBP:hello-java (master) $ jar -tf hellofc.jar | head Picked up _JAVA_OPTIONS: -Duser.language=en META-INF/MANIFEST.MF example/ example/HelloFC.class example/SimpleRequest.class example/SimpleResponse.class META-INF/ META-INF// org/ org// org/apache/ 函数计算目前支持以下 Java 运行环境: OpenJDK 1.8.0 (runtime = java8) 对于 Java 运行环境的基本使用请参考Java 函数入口。以下将介绍 Java 运行环境相关特性: 使用 context 使用 logging 使用自定义的模块 异常处理 使用context context 是函数计算在运行时生成的一个对象,其中包含一些运行时的信息,用户在代码中可以使用这些信息。其定义如下,具体实现可以在 这里 找到: package com.aliyun.fc.runtime; public interface Context { public String getRequestId(); public Credentials getExecutionCredentials(); public FunctionParam getFunctionParam(); public FunctionComputeLogger getLogger(); } 可以看到 context 中包含了4个信息: RequestId: 本次调用请求的唯一 id,用户可以把它记录下来在出现问题的时候方便调查 FunctionParam: 当前调用的函数的一些基本信息如函数名/函数入口/函数内存/超时时间 ExecutionCredentials: 函数计算服务通过扮演用户提供的 服务角色获得的一组临时密钥,其有效时间是 5 分钟。用户可以在代码中使用它去访问相应的服务(例如 OSS),这就避免了用户把自己的 AK 信息写死在函数代码里。 Logger: 函数计算封装过的 logger,见下面的 使用logging 例如下面的代码使用临时密钥,向 OSS 中上传了一个文件: package example; import com.aliyun.fc.runtime.Context; import com.aliyun.fc.runtime.Credentials; import com.aliyun.fc.runtime.StreamRequestHandler; import com.aliyun.oss.OSSClient; import java.io.ByteArrayInputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; public class HelloFC implements StreamRequestHandler { @Override public void handleRequest( InputStream inputStream, OutputStream outputStream, Context context) throws IOException { String endpoint = "oss-cn-shanghai.aliyuncs.com"; String bucketName = "my-bucket"; Credentials creds = context.getExecutionCredentials(); OSSClient client = new OSSClient( endpoint, creds.getAccessKeyId(), creds.getAccessKeySecret(), creds.getSecurityToken()); client.putObject(bucketName, "my-object", new ByteArrayInputStream(new String("hello").getBytes())); outputStream.write(new String("done").getBytes()); } } 使用logging 用户的函数通过 context.getLogger() 打印的内容会被收集到用户在创建 Service 时指定的 LogStore 中: package example; import com.aliyun.fc.runtime.Context; import com.aliyun.fc.runtime.StreamRequestHandler; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; public class HelloFC implements StreamRequestHandler { @Override public void handleRequest( InputStream inputStream, OutputStream outputStream, Context context) throws IOException { context.getLogger().info("hello world"); outputStream.write(new String("hello world").getBytes()); } } 上面的代码输出的日志内容是: message:2017-07-05T05:13:35.920Z a72df088-f738-cee3-e0fe-323ad89118e5 [INFO] hello world 使用 context.getLogger().warn 和 context.getLogger().error 分别可以打包 WARN/ERROR 级别的日志。 使用自定义的模块 如果用户需要使用自定义的模块,则需要在打包 jar 时,将它们与代码一起打包。以下演示如何将 OSS Java SDK 打包到项目中。 在 pom.xml 中添加 OSS java SDK: com.aliyun.fc.runtime fc-java-core 1.2.1 com.aliyun.oss aliyun-sdk-oss 2.6.1 执行通用打包流程 请参考 Java 代码打包 错误处理 用户的函数在执行过程如果抛出异常,那么函数计算会把异常捕获并将异常信息返回。例如下面的代码: package example; import com.aliyun.fc.runtime.Context; import com.aliyun.fc.runtime.StreamRequestHandler; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; public class HelloFC implements StreamRequestHandler { @Override public void handleRequest(InputStream inputStream, OutputStream outputStream, Context context) throws IOException { throw new IOException("oops"); } } 调用时收到的响应为: invk hello-java -f /tmp/a.json { "errorMessage" : "oops", "errorType" : "java.io.IOException", "errorCause" : "oops", "stackTrace" : [ "example.HelloFC.handleRequest(HelloFC.java:15)" ] } Error: Request id: 45dd8d90-6b78-cce3-087c-8bf4ebc6c9af. Error type: UnhandledInvocationError 发生异常时,函数调用的响应的HTTP header中会包含X-Fc-Error-Type: UnhandledInvocationError。

1934890530796658 2020-03-27 16:27:27 0 浏览量 回答数 0

回答

点击某一个函数名,会读取整个文档并弹出子窗口显示 - 这个无论是用原生js还是jquery都可以简单快速做到 定位到选择的函数 - 这个我认为做个锚就行了,如果不太清楚锚是干嘛的,可以参考一下这个  html 网页中的锚点的使用介绍 ######我知道锚,但问题是读取的文档是一个后台的方法类,无法也不能添加锚点...###### 你想搞一个方便从html页面中快速查看 某个语言的函数文档吧。 类似于语言手册一样方便,或者是自己项目文档。 例如,这样一个列表。 json_decode json_encode 点击后会用 js window.open, 指定大小的新窗口打对应的链接。 如 点击 json_decode 弹开 http://php.net/manual/zh/function.json-decode.php ######是的,但就是不知道怎样定位到点击的函数方法######phpDesigner编辑器, 可以直接关连手册. ######回复 @ZeronoFreya : 用 class来选择 例如列表 <div class="my_list"><ul><li>json_decode</li>....</ul></div> Jquery 选择就写成 $('.my_list > ul > li').click(function(){ open new window}); 或者直接就给函数列表加上某个class名 直接用 $('.my_li')选择就成了。 哈哈,不知道你问是不是这样的。######很遗憾不是的...简单来说就是读取一篇文档,但你不能修改其内容,里面有一些关键字,在html里有对应的链接(其实没对应),单击连接后定位到关键字所在行... 类似查找功能######回复 @ZeronoFreya : 就是百度百科中的关键词连接一样对吧。 又不能改html,你怎么知道一段html里某个是关键词。 保存文档没有这个关键词链接,只能在web返回页面时加上,才是你说不能修改html原因吧。 用php把关键词替换成超链接或者加个<span>标签。 ------------------------------------------------------ 问的不清楚,估计连你自己都不知道要写成什么样的。###### 引用来自“dworry”的评论回复 @ZeronoFreya : 就是百度百科中的关键词连接一样对吧。 又不能改html,你怎么知道一段html里某个是关键词。 保存文档没有这个关键词链接,只能在web返回页面时加上,才是你说不能修改html原因吧。 用php把关键词替换成超链接或者加个<span>标签。 ------------------------------------------------------ 问的不清楚,估计连你自己都不知道要写成什么样的。 无法编辑问题真的很.... 请原谅我不及格的语文成绩... 比如html中是这样的: <ul> <li>hahaha</li> <li>...</li> </ul> 后台控制器,不能改 ... function hahaha(){ ... } ... 当我点击<li>hahaha</li>时,会把整个后台控制器作为文本文档读取到变量中, 然后append到<mycode></mycode>,将包含此自定义标签的Div显示(模拟子窗口), 这时就显示了后台控制器的所有方法, 然后,定位到hahaha这个方法所在行... (别问我为啥这么做,上面要求的) 基本来说,就是做一个后台控制器方法的预览器,无修改能力,但必须要同步...所以采用了读取后台控制器文档的方法,所以绝对不能动后台控制器的脑筋 现在我能想到的就是一般文本编辑器所具有的查找功能,但不知道具体如何实现,百度一堆都是调用了一个函数,然后就没了,老实说,我想要的是思路...跑题了 ###### 引用来自“dworry”的评论 回复 @ZeronoFreya : 就是百度百科中的关键词连接一样对吧。 又不能改html,你怎么知道一段html里某个是关键词。 保存文档没有这个关键词链接,只能在web返回页面时加上,才是你说不能修改html原因吧。 用php把关键词替换成超链接或者加个<span>标签。 ------------------------------------------------------ 问的不清楚,估计连你自己都不知道要写成什么样的。 引用来自“ZeronoFreya”的评论 无法编辑问题真的很.... 请原谅我不及格的语文成绩... 比如html中是这样的: <ul> <li>hahaha</li> <li>...</li> </ul> 后台控制器,不能改 ... function hahaha(){ ... } ... 当我点击<li>hahaha</li>时,会把整个后台控制器作为文本文档读取到变量中, 然后append到<mycode></mycode>,将包含此自定义标签的Div显示(模拟子窗口), 这时就显示了后台控制器的所有方法, 然后,定位到hahaha这个方法所在行... (别问我为啥这么做,上面要求的) 基本来说,就是做一个后台控制器方法的预览器,无修改能力,但必须要同步...所以采用了读取后台控制器文档的方法,所以绝对不能动后台控制器的脑筋 现在我能想到的就是一般文本编辑器所具有的查找功能,但不知道具体如何实现,百度一堆都是调用了一个函数,然后就没了,老实说,我想要的是思路...跑题了 就是在线版的 ctage 你用过 sublime text + ctage 或者 是 gvim + ctage 代码跳转的。 ctage 在项目文档中生成 .tage 文本,(看下面是我项目中生成的.tage一段内容) 你可以根据这段内容来定位到要读取的代码。 secure_cookie .\system\core\Security.php /^ $secure_cookie = (config_item('cookie_secure') === TRUE) ? 1 : 0;$/;" v security .\system\core\Input.php /^ $this->security =& $SEC;$/;" v see_json .\application\helpers\common_helper.php /^ function see_json($json) {$/;" f segment .\system\core\URI.php /^ function segment($n, $no_result = FALSE)$/;" f segment_array .\system\core\URI.php /^ $segment_array = 'rsegment_array';$/;" v segment_array .\system\core\URI.php /^ $segment_array = 'segment_array';$/;" v 如我定义的 see_json 函数 第一列是函数名, 第二列是所在文件, 第三个是正则函数名所有行。 see_json    .\application\helpers\common_helper.php    /^    function see_json($json) {$/;"    f 可以在本地生成 .tage文件与代码一起提交上去。 只要写个php解析这个.tage文件最行了。 ######谢谢,我研究一下

kun坤 2020-06-06 15:30:57 0 浏览量 回答数 0

回答

回 1楼(dongshan8) 的帖子 我的文章页面调用随机文章的地方用了rand函数 不知道是不是这个问题导致数据库频繁读数据大量占用IO? 不知道用RDS能解决吗 ------------------------- 我打开三十四个页面,然后很多页面就出现504错误了,结果我用iostat查看服务器,结果如图,请高手帮我看看这个图上的数据正常吗? 搜索复制

wdlm.cn 2019-12-02 02:24:54 0 浏览量 回答数 0

问题

如何高效扫描 DRDS 数据

猫饭先生 2019-12-01 21:20:59 1007 浏览量 回答数 0

回答

楼主您好, 欢迎来到阿里云论坛。 您可以通过创建一个php文件,用phpinfo函数查看当前文件的绝对路径喔。 如我这里测试得到的:/home/u1018/ace/workspace/php/appcode/webroot/htdocs/old/info.php ------------------------- 回 2楼(1齐天大圣1) 的帖子 您好, Linux环境中,可能没有D或F盘的概念喔。 您用程序或脚本检测出您的弹性Web托管产品的存储路径了吗?

dongshan8 2019-12-02 00:28:09 0 浏览量 回答数 0

回答

您好,如果您使用的是虚拟主机或轻云主机,php.ini配置文件中可进行修改的是您在控制面板中可查看到的,其他函数不支持调整。您遇到的情况需具体排查,建议您通过工单提交下您的主机信息及连接报错信息我们再核实下,谢谢! ------------------------- 您好,请您通过私信提供一下主机登录名,以便为您排查核实,谢谢。 ------------------------- 您好,您的问题已经通过私信解决,感谢您对阿里云的支持。

阿里云支持与服务 2019-12-01 23:31:10 0 浏览量 回答数 0

回答

  1 、递归函数的定义:   答:递归函数即自调用函数,在函数体内直接或间接的调用自己,即函数的嵌套是函数本身。   2 、递归方式:递归调用有直接递归和间接递归两种方式。   A :直接递归:在函数中出现调用函数本身。   示例 1 :下面代码求斐波那契数列第 n 项,斐波那契数列第一和第二项是 1 ,后面每一项是前两项之和,即 1 、 1 、 2 、 3 、 5 、 8 、 13  ...。   程序代码:   public class Test {   public static void main(String args[]) {   int x1 = 1;   int sum = 0;   int n = 7;   for (int i = 1; i <= n; i++) {   x1 = func(i);   sum = sum + x1;   }   System.out.println("sum=" + sum);   }   public static int func(int x) {   if (x >2)   return (func(x - 1) + func(x - 2));   else   return 1;   }   }   B :间接递归:指函数中调用了其他函数,而该其他函数有调用了本函数。   示例 2 :用间接递归来计算上述斐波那契数列。   3 、为什么要用递归函数。递归函数的缺点是什么。   答:递归的目的是简化程序设计,使程序易读。   示例 3 :下面不用递归函数继续来计算上述斐波那契数列。   程序代码:   public class Test {   public static void main(String args[]) {   int n=7;   int a=1, b=1, temp;   int sum=2;   for(int i=3; i<=n; i++){   temp=a+b; a=b; b=temp;   sum=sum+temp;   }   System.out.println("sum=" + sum);   }   }   从上面例子我们可以发现虽然非递归函数效率高,但较难编程,可读性较差。递归函数的缺点是增加了系统开销,也就是说,每递归一次,栈内存就多占用一截。   4 、递归的条件:   答:需有完成任务的语句,需满足递归的要求(减小而不是发散)。   5 、递归进阶:   示例 4 :   编程求解:若一头小母牛,从出生起第四个年头开始每年生一头母牛,按次规律,第 n 年时有多少头母牛。   程序代码:   public class Test3 {   public static void main(String args[]) {   int n=10; // 要查看的年数   System.out.println(" 共有 "+cattle(n)+" 头小母牛! ");   }   public static int cattle(int n){   if(n<=0)   return 0;   if(n<=3)   return 1;   return cattle(n-1)+ cattle(n-3);// 此处是递归要好好理解。   }   }   规律:此类问题的递归函数为:   如果要求的是从出生起第四个年头,则递归函数为 cattle(n-1)+ cattle(n-3) ,   如果要求的是从出生起第五个年头,则递归函数为 cattle(n-1)+ cattle(n-4) ,   。。。。   依次类推。   (原代码全部在 JBuilderX 下调试通过)   

行者武松 2019-12-02 01:25:22 0 浏览量 回答数 0

回答

本文介绍了任务状态轮询和 Serverless 工作流实现的具体步骤。 简介 在长时间任务的场景中如果任务结束后没有回调机制,开发者通常会采用轮询的方式来判断任务的结束。可靠的轮询实现需要维护状态的持久化以保证即使当前轮询进程失败退出,进程恢复后轮询也会继续进行。本示例通过一个假设场景:用户调用函数计算提交了一个多媒体处理任务,该任务耗时从 1 分钟到几小时不等,任务执行状态可以通过 API 查询,介绍如何使用 Serverless 工作流实现一个通用可靠的任务轮询工作流。 Serverless 工作流实现 下面的教程会将两个 FC 函数编排成一个任务轮询工作流,该示例需要以下 3 个步骤: 创建 FC 函数 创建 Serverless 工作流流程 开始执行并查看结果 步骤1:创建 FC 函数 首先创建一个名为 fnf-demo 的 FC 服务,并在该服务下创建两个 Python2.7 的函数,详细步骤请参见 FC 文档。 StartJob 函数:模拟通过调用 API 开始一个长时间的任务,返回一个任务 ID。 import logging import uuid def handler(event, context): logger = logging.getLogger() id = uuid.uuid4() logger.info('Started job with ID %s' % id) return {"job_id": str(id)} GetJobStatus 函数: 模拟通过调用 API 获取指定任务的执行结果,比较当前的时间和函数第一次执行的时间的差值和输入中 delay 的值,返回不同的状态:“success” 或 “running”。 import logging import uuid import time import json start_time = int(time.time()) def handler(event, context): evt = json.loads(event) logger = logging.getLogger() job_id = evt["job_id"] logger.info('Started job with ID %s' % job_id) now = int(time.time()) status = "running" delay = 60 if "delay" in evt: delay = evt["delay"] if now - start_time > delay: status = "success" try_count = 0 if "try_count" in evt: try_count = evt["try_count"] try_count = try_count + 1 logger.info('Job %s, status %s, try_count %d' % (job_id, status, try_count)) return {"job_id": job_id, "job_status":status, "try_count":try_count} 步骤 2:创建 Serverless 工作流流程 该流程的主要逻辑描述如下: StartJob 步骤: 调用 StartJob 函数开始一个任务。 Wait10s 步骤: 等待 10 秒。 GetJobStatus 步骤: 调用 GetJobStatus 函数查询当前任务状态。 CheckJobComplete 步骤: 检查 GetJobStatus 函数返回的结果: 如果返回 "success" 整个流程执行成功。 如果轮询尝试次数大于 3 次,认为任务执行失败,流程执行失败。 如果返回 "running" 则跳回到 Wait10s 步骤,继续执行。 version: v1 type: flow steps: - type: task name: StartJob resourceArn: acs:fc:cn-hangzhou:{accountID}:services/fnf-demo/functions/StartJob - type: pass name: Init outputMappings: - target: try_count source: 0 - type: wait name: Wait10s duration: 10 - type: task name: GetJobStatus resourceArn: acs:fc:cn-hangzhou:{accountID}:services/fnf-demo/functions/GetJobStatus inputMappings: - target: job_id source: $local.job_id - target: delay source: $input.delay - target: try_count source: $local.try_count - type: choice name: CheckJobComplete inputMappings: - target: status source: $local.job_status - target: try_count source: $local.try_count choices: - condition: $.status == "success" goto: JobSucceeded - condition: $.try_count > 3 goto: JobFailed - condition: $.status == "running" goto: Wait10s - type: succeed name: JobSucceeded - type: fail name: JobFailed 步骤 3:开始执行并查看结果 在控制台创建好的流程中单击 新执行 并提供以下 JSON 对象作为输入,其中 delay 字段的值模拟任务完成需要的时间,这里预期任务在开始 20秒 后, GetJobStatus 函数返回 “success”,在此之前均返回 “running”,您可以调整 delay 的值观察不同的执行结果。 { "delay": 20 } 下图展示的是轮询从开始到结束的流程执行可视化。Screen Shot 2019-06-26 at 12.30.01 PM 下图展示的是任务需要 20 秒完成,可以看到流程执行历史中第一次 GetJobStatus 返回 “running” 因此 CheckJobComplete 的后续步骤眺回到 Wait10s 进行等待和下一次查询,第二次查询返回 “success”,流程执行结束。Screen Shot 2019-06-26 at 12.39.26 PM

1934890530796658 2020-03-27 10:46:26 0 浏览量 回答数 0

问题

基于使用Python/ panda的部分日期交集从数据流中查找值

kun坤 2019-12-28 13:45:23 41 浏览量 回答数 1

问题

函数计算怎么 创建函数

boxti 2019-12-01 21:48:01 1060 浏览量 回答数 0

回答

引用第1楼foryou_love于2012-04-09 16:51发表的  : 谢谢楼主啊 很有用 主要方便大家,如果使用的人多,以后继续更新, 弄个PHP在线管理的,就是不知道那点基础能不能做出来.... 还有个又拍的版本 也可以使用的 不发链接了 博客里有下载 界面一样 设置也差不多的 *_*  简单的东西 大家不要吐口水就好了..... ------------------------- Re:回 楼主(wxdqz) 的帖子 引用第4楼true2012于2012-04-11 17:41发表的 回 楼主(wxdqz) 的帖子 : 为什么我的选着空间那里是空的呢? 你需要先在 oss.aliyun.com 里建下存储空间 否则无法列出来的 因为没 所以无法列出来 打开oss.aliyun.com 点击管理  - oos体验站  - 创建存储空间 输入名字 完成后 侧边可以看到 在返回 就有了 ------------------------- 回 7楼(lovehc) 的帖子 根据你PHP的限制  php.ini 的post size 和upload size 设置为100M 就是100M 阿里云这种方式是最大100M 在大的话要分段上传 ------------------------- 回14楼amen930384211的帖子 查看下php探针 是不是函数被禁用了

wxdqz 2019-12-02 03:00:58 0 浏览量 回答数 0

回答

information_schema数据库是在mysql的版本5.0之后产生的,一个虚拟数据库,物理上并不存在。information_schema数据库类似与“数据字典”,提供了访问数据库元数据的方式,即数据的数据。比如数据库名或表名,列类型,访问权限(更加细化的访问方式)。其中重要的表有:SCHEMATA表---SCHEMATA表提供了当前mysql实例中所有数据库的信息。是show databases的结果取之此表。TABLES表---TABLES表提供了关于数据库中的表的信息(包括视图)。详细表述了某个表属于哪个schema,表类型,表引擎,创建时间,等等信息。是show tables from schemaname的结果取之此表。COLUMNS表---COLUMNS表提供了表中的列信息。详细表述了某张表的所有列以及每个列的信息。是show columns from schemaname.tablename的结果取之此表。STATISTICS表---STATISTICS表提供了关于表索引的信息。是show index from schemaname.tablename的结果取之此表。USER_PRIVILEGES表---USER_PRIVILEGES(用户权限)表给出了关于全程权限的信息。该信息源自mysql.user授权表。是非标准表。SCHEMA_PRIVILEGES表---SCHEMA_PRIVILEGES(方案权限)表给出了关于方案(数据库)权限的信息。该信息来自mysql.db授权表。是非标准表。TABLE_PRIVILEGES表---TABLE_PRIVILEGES(表权限)表给出了关于表权限的信息。该信息源自mysql.tables_priv授权表。是非标准表。COLUMN_PRIVILEGES表---COLUMN_PRIVILEGES(列权限)表给出了关于列权限的信息。该信息源自mysql.columns_priv授权表。是非标准表。CHARACTER_SETS表---CHARACTER_SETS(字符集)表提供了mysql实例可用字符集的信息。是SHOW CHARACTER SET结果集取之此表。COLLATIONS表---COLLATIONS表提供了关于各字符集的对照信息。COLLATION_CHARACTER_SET_APPLICABILITY表---COLLATION_CHARACTER_SET_APPLICABILITY表指明了可用于校对的字符集。这些列等效于SHOW COLLATION的前两个显示字段。TABLE_CONSTRAINTS表---TABLE_CONSTRAINTS表描述了存在约束的表。以及表的约束类型。KEY_COLUMN_USAGE表---KEY_COLUMN_USAGE表描述了具有约束的键列。ROUTINES表---ROUTINES表提供了关于存储子程序(存储程序和函数)的信息。此时,ROUTINES表不包含自定义函数(UDF)。名为“mysql.proc name”的列指明了对应于INFORMATION_SCHEMA.ROUTINES表的mysql.proc表列。VIEWS表---VIEWS表给出了关于数据库中的视图的信息。需要有show views权限,否则无法查看视图信息。TRIGGERS表---TRIGGERS表提供了关于触发程序的信息。必须有super权限才能查看该表。另外,在未来的版本中会有新的表添加。【注】information_schema是一个由数据库的元数据组成的数据库。里面存储的是mysql的数据库基本信息。并随时改变。用于查看信息以及系统决策时作为重要的信息提供者。

淘人儿 2019-12-02 02:16:51 0 浏览量 回答数 0

问题

MaxCompute用户指南:常用命令:函数操作

行者武松 2019-12-01 22:01:48 1186 浏览量 回答数 0

回答

以下三种设置方法均需要PHP版本为5.3或者以上。​ ​ ​方法1)在Nginx配置文件中加入 fastcgi_param  PHP_VALUE  "open_basedir=$document_root:/tmp/:/proc/"; 通常nginx的站点配置文件里用了include fastcgi.conf;,这样的,把这行加在fastcgi.conf里就OK了。 如果某个站点需要单独设置额外的目录,把上面的代码写在include fastcgi.conf;这行下面就OK了,会把fastcgi.conf中的设置覆盖掉。 这种方式的设置需要重启nginx后生效。 方法2)在php.ini中加入: [HOST=www.server110.com] open_basedir=/home/www/www.server110.com:/tmp/:/proc/ [PATH=/home/www/www.server110.com] open_basedir=/home/www/www.server110.com:/tmp/:/proc/ 这种方式的设置需要重启php-fpm后生效。 方法3)在网站根目录下创建.user.ini并写入: open_basedir=/home/www/www.server110.com:/tmp/:/proc/ 这种方式不需要重启nginx或php-fpm服务。但是安全起见应当取消掉.user.ini文件的写权限。 ​关于.user.ini​文件的详细说明: ​http://php.net/manual/zh/configuration.file.per-user.php​ 设置open_basedir的同时最好禁止下执行命令的函数,比如: shell_exec('ls /etc')仍然查看到/etc目录的文件列表 shell_exec('cat /etc/passwd')仍可查看到/etc/passwd文件的内容 建议禁止的函数如下: disable_functions = pcntl_alarm, pcntl_fork, pcntl_waitpid, pcntl_wait, pcntl_wifexited, pcntl_wifstopped, pcntl_wifsignaled, pcntl_wexitstatus, pcntl_wtermsig, pcntl_wstopsig, pcntl_signal, pcntl_signal_dispatch, pcntl_get_last_error, pcntl_strerror, pcntl_sigprocmask, pcntl_sigwaitinfo, pcntl_sigtimedwait, pcntl_exec, pcntl_getpriority, pcntl_setpriority, eval, popen, passthru, exec, system, shell_exec, proc_open, proc_get_status, chroot, chgrp, chown, ini_alter, ini_restore, dl, pfsockopen, openlog, syslog, readlink, symlink, popepassthru, stream_socket_server, fsocket, chdir from http://www.server110.com/nginx/201308/477.html ------------------------- 方法2中的方式是在php5.3开始支持的方法1应该是不受版本限制,等我再测试下吧。 ------------------------- 测试了下,所有设置方式都需要PHP版本至少5.3。

云代维 2019-12-02 01:57:36 0 浏览量 回答数 0

回答

您可以使用event()函数和pytest的--hypothesis-show-statistics参数查看自定义事件的发生频率。 我们的状态测试不支持用户定义的分布,我们发现它们通常会适得其反,但我们会自动使用Swarm Testing为您提供经验上优于天真的随机分布-请参阅https:// hypothesis。阅读thedocs.io/en/latest/changes.html#v4-49-0-其他技巧。

祖安文状元 2020-02-22 15:32:58 0 浏览量 回答数 0

回答

您可以使用event()函数和pytest的--hypothesis-show-statistics参数查看自定义事件的发生频率。 我们的状态测试不支持用户定义的分布,我们发现它们通常会适得其反,但我们会自动使用Swarm Testing为您提供经验上优于天真的随机分布-请参阅https:// hypothesis。阅读thedocs.io/en/latest/changes.html#v4-49-0-其他技巧。

祖安文状元 2020-02-22 15:35:20 0 浏览量 回答数 0

回答

在php.ini文件最后加入了extension=bcmath.so,重启看看 ------------------------- 回 楼主(叮铛) 的帖子 如果不行就是没安装 那就安装 yum install php-bcmath ------------------------- 回 4楼(叮铛) 的帖子 已经安装最新版本了,说明已经安装了 ------------------------- 回 4楼(叮铛) 的帖子 php.ini文件应该有2个地方 ------------------------- WDCP的面板,我比较少接触。。。应该是在php.ini文件修改重启就可以 ------------------------- 回 楼主(叮铛) 的帖子 看看PHP安装目录下的ext文件夹下面有bcmath.so这个文件没有 ------------------------- 帮你搜索下:某些时候需要用到bcscale函数,需要用到php-bcmath扩展一般情况下这个扩展在php安装的时候,是存在ext/bcmath目录的那么利用phpize进行安装新的php扩展cd bcmath目录下/etc/php/bin/phpize(phpize的路径根据各自安装有所不同)./configure --with-php-config=/www/wdlinux/php/bin/php-config(php-config文件的路径)makemake install最后还需要把生成的bcmath.so文件加入到php.ini中 extesion=bcmath.so(如果没有设定extesion_dir,可能要加上全路径,查看phpize执行后的生成的so文件的路径即可,这里是:extension_dir=/www/wdlinux/php/lib/php/extensions/no-debug-zts-20060613)然后重启web服务器,就Ok了 ------------------------- 回 11楼(叮铛) 的帖子 www/wdlinux/php/lib/php

梦丫头 2019-12-02 02:41:43 0 浏览量 回答数 0

回答

如果您通过id字段键入流,则无需考虑不同的ID - 您将为每个不同的键设置单独的窗口。您的窗口函数只需迭代窗口内容以查找具有最大时间戳的UserMessage,并将其作为窗口的结果输出(对于该键)。但是,有一个内置函数可以做到这一点 - 查看maxBy()的文档 - 因此在这种情况下不需要窗口函数。粗略地说,这看起来像stream.keyBy("id") .timeWindow(Time.minutes(10)) .maxBy("time") .print()

flink小助手 2019-12-02 01:46:53 0 浏览量 回答数 0

问题

windows2003服务器下dedecms漏洞(发攻击包的处理)

chinaccnet 2019-12-01 21:27:26 10925 浏览量 回答数 7

问题

PHP SDK开发包

青衫无名 2019-12-01 21:48:55 889 浏览量 回答数 0

问题

SQLException的getMessage()函数获取到的值后面是带回车换行吗??报错

爱吃鱼的程序员 2020-06-22 18:42:23 0 浏览量 回答数 1

问题

如何在不加入联接的情况下使用相关表以光滑的方式获取数据?

保持可爱mmm 2019-12-01 21:57:50 2 浏览量 回答数 0

问题

PHP安装imagick扩展问题:已经安装但是没有扩展中的任何方法?

落地花开啦 2019-12-01 20:05:43 1522 浏览量 回答数 2
阿里云大学 云服务器ECS com域名 网站域名whois查询 开发者平台 小程序定制 小程序开发 国内短信套餐包 开发者技术与产品 云数据库 图像识别 开发者问答 阿里云建站 阿里云备案 云市场 万网 阿里云帮助文档 免费套餐 开发者工具 云栖号物联网 小程序开发制作 视频内容分析 企业网站制作 视频集锦 代理记账服务 2020阿里巴巴研发效能峰会 企业建站模板 云效成长地图 高端建站 云栖号弹性计算 阿里云云栖号 云栖号案例 云栖号直播