热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

saephp操作数据库的简单介绍

新浪Sae里php的数据导入不太清楚你是想问什么?如果是要上传PHP代码,在你的管理应用,然后代码管理,就可以直接上传代码了如果你是想导入mysql数据库中的数据,那在sae新建一

新浪Sae里php的数据导入

不太清楚你是想问什么?

如果是要上传PHP代码,在你的管理应用,然后代码管理,就可以直接上传代码了

如果你是想导入mysql数据库中的数据,那在sae新建一个数据库,然后使用它的phpadmin,把你本地的sql直接导入就行,将来在你的数据库配置文件中,要把那些配置项使用sae提供的常量,这些你百度下,都会有的

在新浪sae上php代码调用数据库

?php

// 连主库

$link=mysql_connect(SAE_MYSQL_HOST_M.':'.SAE_MYSQL_PORT,SAE_MYSQL_USER,SAE_MYSQL_PASS);

// 连从库

// $link=mysql_connect(SAE_MYSQL_HOST_S.':'.SAE_MYSQL_PORT,SAE_MYSQL_USER,SAE_MYSQL_PASS);

if($link)

{

mysql_select_db(SAE_MYSQL_DB,$link);

//your code goes here

}

//创建一个数据库表

function _create_table($sql){

mysql_query($sql) or die('创建表失败,错误信息:'.mysql_error());

return "创建表成功";

}

//插入数据

function _insert_data($sql){

if(!mysql_query($sql)){

return 0; //插入数据失败

}else{

if(mysql_affected_rows()0){

return 1; //插入成功

}else{

return 2; //没有行受到影响

}

}

}

//删除数据

function _delete_data($sql){

if(!mysql_query($sql)){

return 0; //删除失败

}else{

if(mysql_affected_rows()0){

return 1; //删除成功

}else{

return 2; //没有行受到影响

}

}

}

//修改数据

function _update_data($sql){

if(!mysql_query($sql)){

return 0; //更新数据失败

}else{

if(mysql_affected_rows()0){

return 1; //更新成功;

}else{

return 2; //没有行受到影响

}

}

}

function _select_data($sql){

$ret = mysql_query($sql) or die('SQL语句有错误,错误信息:'.mysql_error());

return $ret;

}

function _drop_table($sql){

mysql_query($sql) or die('删除表失败,错误信息:'.mysql_error());

return "删除表成功";

}

?

把php程序运行到sae上有什么用

首次听说SAE是在丛磊大牛在两年多前的一次小范围讲座中,但是真正开始使用SAE则是在2013年9月。当时自己的个人网站使用的还是传统的虚拟主机服务,运营商的不作为和服务器的频繁抽风导致我的小站几乎无法访问。忍无可忍的我再次想到了SAE。说起来自己也是学计算机的学生,应该沿着IT发展趋势以实际行动拥抱云计算。但是SAE毕竟不是虚拟主机,而是PaaS服务。这里简单写一篇短文,介绍一下自己的用PHP开发网站迁移到SAE的经历过程中总结的一些小经验。

以文章或类文章内容为主的网站,或者说CMS,通常的架构是PHP处理程序+MySQL数据库+前端模板。PHP处理程序对数据库进行读写操作,并将处理后的数据套用前端模板呈现给Web用户。但是这类程序部署或迁移到SAE时会主要遇到两个问题,一是存储空间的域名和程序空间的不同,二是程序空间不可写。这就使得以前直接生成静态页面的程序无法直接使用了,也会使得在程序空间生成缓存数据的程序无法直接使用了。怎么解决这些问题呢?

一、生成静态页面?

由于程序空间不可写,生成静态页面只能将页面创建到KVDB、MemCache(以下简称MC)和Storage中。但是前两者是不能被Web用户直接访问的,而Storage空间的域名和主域名不同,直接将页面跳转到Storage空间无疑对Web用户不太友好。因此,需要结合URL重写功能和PHP程序来完成这一任务。

1、PHP程序+Storage存储

简单来说,就是Web用户访问一个URL,但是该URL并不存在,通过URL重写转移到某个PHP程序,比如show.php吧,然后将URL中的path作为参数传递给show.php。show.php以该path到Storage中找到相应的静态页面,然后加载该文件并显示出来。但是这里用header功能跳转到该页面是没有意义的,URL将又转到Storage空间的域名了。因此,需要使用Storage服务的read方法,将文件读取出来,再在show.php中显示出来。

需要说明的是,Storage的流出是要计费的,而show.php读取后再以HTTP方式在用户的浏览器中显示出来还是需要计费的,个人猜想这样做会造成网站内容部分的双重计费(个人猜测未经证实,请大家指正)。而MySQL、KVDB和MC是按照请求数量计费的。考虑到Storage的流出计费是150云豆/GB,而另外三种中最贵的MySQL的请求计费是150云豆/百万次,因此,当平均每次请求的流量(1G/100万),即约1.05KB时,使用MySQL就更便宜的了。然而,现在网页的源文件动不动就超过1KB了,所以不一定非得生成静态。同时,生成静态后的网页也不便于更新或更改风格。

2、PHP程序+KVDB或MC

和前面的类似,无非就是将生成的静态页面以值的形式存储在KVDB或MC中。这种存储和Storage相比,计费的方式发生了变化,是按照请求次数计费的。KVDB是50云豆/百万次,MC是25云豆/百万次。但是需要注意的是,MC的存储费用相当昂贵,是200云豆/GB•天,而KVDB、MySQL和Storage的存储费用都是5云豆/GB•天。因此,当网站内容稍微多一点点的时候,使用KVDB要比MC更合适。

MySQL和KVDB的计费相比,MySQL的请求费用是KVDB的3倍。但是使用MySQL不需要生成静态页面,使用KVDB时相当于读取MySQL后生成的静态页面存储在KVDB中,多占用了一份存储空间(别告诉我说准备将数据只存储在KVDB中,真要是SAE的KVDB再瘫痪一次,那网站就麻烦大了)。

因此,我的网站在实现方式上,首页和列表页等频繁访问的页面中通过MySQL查询的结果存储在KVDB中,减少对数据库的查询请求操作。而其他页面不再缓存,直接从数据库中读取,这样做可以更好的更新页面中的访问量等动态信息。如果考虑进行进一步优化,可以统计页面的访问量,将访问量较大的页面存储到KVDB中。反正现在PHP的CPU时间是不计费的,多增加几个条件判断语句也没啥^_^

二、缓存

接下来讨论缓存的问题。网站中经常会有一些数据需要运行时加载而不是直接写到程序代码里,这样可以便于在网站后台直接进行设置而不是每次都修改程序代码文件。典型的,比如网站栏目列表、页面显示的一些配置、网站的一些全局配置等。这些配置虽然存储在MySQL中,但是通常还是生成缓存文件在运行时加载。这里使用KVDB和MC都可以。KVDB每次请求贵但是存储很廉价。MC每次请求便宜一半但是存储则为40倍。具体怎么选择看用户了。这里需要说明的是,既然按照请求次数计费而不是按照流量计费,那么最合适的优化方法是将全站所有页面都通用的数据存储到一个缓存中,这样就极大程度减少了因为请求数量造成的计费。

三、模板

模板文件应该放到什么地方呢?因为程序空间不能写,而KVDB和MC不能直接由用户上传和修改,因此要想通过网站后台方便地修改模板,还是应该将模板文件放到Storage中。我的做法是,将模板文件放到Storage中,需要修改时,在网站后台的编辑器中修改,或者在本地修改后使用Cyberduck上传。否则,每次修改模板都得重新部署代码实在是太麻烦了。

模板直接放到Storage中也不便使用,因为读取Storage要比读取KVDB/MC要慢。特别是模板这种每个页面都会用到的文件,还是应该以缓存的方式使用。我的做法是,将模板文件放在Storage中,然后读取它,将其中的一些模板标记改为相应的PHP代码,存储到KVDB中。

但是,这种嵌入了PHP代码的“编译”后的模板怎样执行呢?KVDB提供的get方法只能得到值,因为这些值不全都是PHP代码,毕竟还有html的标签,不能被evel。所以,需要使用KVDB的wrapper,以include的方式加载它。PHP中的include是可以有返回值的,可以据此判断是否成功地加载了缓存。如果不成功,可以重新生成缓存再加载。如果重新生成还不成功,为了网站的正常运行,可以从Storage中加载模板原文件再进行处理。这样可以保证即使部分服务出现故障时网站依然可以最大程度保持正常访问。

综上,我的网站迁移到SAE后的实现思路就是:

1、频繁访问的页面存入KVDB,不频繁访问的页面只存储在数据库,页面均动态生成,用AppConfig实现伪静态。

2、通用缓存尽可能存储到一个KVDB或MC的键值中。

3、模板源文件放到Storage中,模板标签预处理为PHP代码后缓存到KVDB或MC中

4、通过include加载缓存,并在include返回异常时重新生成缓存并加载,如果重新生成缓存的过程发生异常则不再使用缓存而直接输出。

我的个人网站已迁移到SAE中,除去上次SAE故障导致KVDB出现异常之外,一直稳定运行。欢迎大家围观和留言。由于使用SAE也不过半年,才疏学浅。文中的错误还请大家批评指正。

新浪sae怎么运行php和mysql

你可以把php代码放到sae空间去,运行就行,但SAE 的php和mysql 环境某些功能不能使用,但不影响绝大部分程序的运行。

谁来帮我解释一下下面这段代码,是SAE里面php调用MYsql的,谢谢!

?php

//初始话mysql连接

$mysql = new SaeMysql();

$sql = "SELECT * FROM `user` LIMIT 10";

//执行sql

$data = $mysql-getData( $sql );

//获取name参数,并过滤掉html xml php标记

$name = strip_tags( $_REQUEST['name'] );

//age参数格式化为整型

$age = intval( $_REQUEST['age'] );

//构造插入语句

$sql = "INSERT INTO `user` ( `name` , `age` , `regtime` ) VALUES ( '" . $mysql-escape( $name ) . "' , '" . intval( $age ) . "' , NOW() ) ";

//执行插入语句

$mysql-runSql( $sql );

//判断执行是否成功

if( $mysql-errno() != 0 )

{

die( "Error:" . $mysql-errmsg() );

}

//关闭数据库连接

$mysql-closeDb();

?


推荐阅读
  • 计算机存储系统的层次结构及其优势
    本文介绍了计算机存储系统的层次结构,包括高速缓存、主存储器和辅助存储器三个层次。通过分层存储数据可以提高程序的执行效率。计算机存储系统的层次结构将各种不同存储容量、存取速度和价格的存储器有机组合成整体,形成可寻址存储空间比主存储器空间大得多的存储整体。由于辅助存储器容量大、价格低,使得整体存储系统的平均价格降低。同时,高速缓存的存取速度可以和CPU的工作速度相匹配,进一步提高程序执行效率。 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • 开发笔记:计网局域网:NAT 是如何工作的?
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了计网-局域网:NAT是如何工作的?相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 如何实现织梦DedeCms全站伪静态
    本文介绍了如何通过修改织梦DedeCms源代码来实现全站伪静态,以提高管理和SEO效果。全站伪静态可以避免重复URL的问题,同时通过使用mod_rewrite伪静态模块和.htaccess正则表达式,可以更好地适应搜索引擎的需求。文章还提到了一些相关的技术和工具,如Ubuntu、qt编程、tomcat端口、爬虫、php request根目录等。 ... [详细]
  • 一、Hadoop来历Hadoop的思想来源于Google在做搜索引擎的时候出现一个很大的问题就是这么多网页我如何才能以最快的速度来搜索到,由于这个问题Google发明 ... [详细]
  • 本文详细介绍了SQL日志收缩的方法,包括截断日志和删除不需要的旧日志记录。通过备份日志和使用DBCC SHRINKFILE命令可以实现日志的收缩。同时,还介绍了截断日志的原理和注意事项,包括不能截断事务日志的活动部分和MinLSN的确定方法。通过本文的方法,可以有效减小逻辑日志的大小,提高数据库的性能。 ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • PHP设置MySQL字符集的方法及使用mysqli_set_charset函数
    本文介绍了PHP设置MySQL字符集的方法,详细介绍了使用mysqli_set_charset函数来规定与数据库服务器进行数据传送时要使用的字符集。通过示例代码演示了如何设置默认客户端字符集。 ... [详细]
  • 本文介绍了Hyperledger Fabric外部链码构建与运行的相关知识,包括在Hyperledger Fabric 2.0版本之前链码构建和运行的困难性,外部构建模式的实现原理以及外部构建和运行API的使用方法。通过本文的介绍,读者可以了解到如何利用外部构建和运行的方式来实现链码的构建和运行,并且不再受限于特定的语言和部署环境。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • Oracle分析函数first_value()和last_value()的用法及原理
    本文介绍了Oracle分析函数first_value()和last_value()的用法和原理,以及在查询销售记录日期和部门中的应用。通过示例和解释,详细说明了first_value()和last_value()的功能和不同之处。同时,对于last_value()的结果出现不一样的情况进行了解释,并提供了理解last_value()默认统计范围的方法。该文对于使用Oracle分析函数的开发人员和数据库管理员具有参考价值。 ... [详细]
  • 解决Cydia数据库错误:could not open file /var/lib/dpkg/status 的方法
    本文介绍了解决iOS系统中Cydia数据库错误的方法。通过使用苹果电脑上的Impactor工具和NewTerm软件,以及ifunbox工具和终端命令,可以解决该问题。具体步骤包括下载所需工具、连接手机到电脑、安装NewTerm、下载ifunbox并注册Dropbox账号、下载并解压lib.zip文件、将lib文件夹拖入Books文件夹中,并将lib文件夹拷贝到/var/目录下。以上方法适用于已经越狱且出现Cydia数据库错误的iPhone手机。 ... [详细]
  • 达人评测 酷睿i5 12450h和锐龙r7 5800h选哪个好 i512450h和r75800h对比
    本文介绍了达人评测酷睿i5 12450h和锐龙r7 5800h选哪个好的相关知识,包括两者的基本配置和重要考虑点。希望对你在选择时提供一定的参考价值。 ... [详细]
  • 如何提高PHP编程技能及推荐高级教程
    本文介绍了如何提高PHP编程技能的方法,推荐了一些高级教程。学习任何一种编程语言都需要长期的坚持和不懈的努力,本文提醒读者要有足够的耐心和时间投入。通过实践操作学习,可以更好地理解和掌握PHP语言的特异性,特别是单引号和双引号的用法。同时,本文也指出了只走马观花看整体而不深入学习的学习方式无法真正掌握这门语言,建议读者要从整体来考虑局部,培养大局观。最后,本文提醒读者完成一个像模像样的网站需要付出更多的努力和实践。 ... [详细]
  • 本文介绍了操作系统的定义和功能,包括操作系统的本质、用户界面以及系统调用的分类。同时还介绍了进程和线程的区别,包括进程和线程的定义和作用。 ... [详细]
author-avatar
王晓东
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有