用PHP访问Predix PostgreSQL数据库

来源:互联网 发布:淘宝客服售后对话技巧 编辑:程序博客网 时间:2024/06/05 23:40

作者:唐翊国,开发者生态资深经理,GE数字集团

23年工作经验,长期在杜邦、欧文斯科宁、庄信万丰等从事制造业信息化工作,规划、实施了大量MES、SAP ERP、LIMS、BPM等项目,积累了丰富的制造业数字化转型经验。

 

如果您还没有Predix试用帐号,请访问

https://supportcentral.ge.com/esurvey/GE_survey/takeSurvey.html?form_id=18446744073709715720

申请。请务必准确提供您的信息,我们会以邮件方式通知您注册结果。

 

如果您使用Windows操作系统,请参考http://blog.csdn.net/predixcn/article/details/53967673系列文章设置您的开发环境。

如果您使用Linux操作系统,请参考http://blog.csdn.net/predixcn/article/details/54093234系列文章设置您的开发环境。

 

在文章http://blog.csdn.net/predixcn/article/details/70238562 中我们已经创建了一个PostgreSQL数据库和一个空表,本文将示例如何使用PHP语言来访问这个数据库。

在Predix上开发一个简单的PHP应用是非常容易的,

1. 创建一个文件夹,比如 C:\PxDev\php

2. 在这个文件夹里创建一个PHP文件,例如index.php

<?php

   echo"Welcome to Eagle's php demo application on Predix!";

   echo"<br />\n";

   echo"We'll explore how to access PostgreSQL on Predix.";

?>

3. 在同一个文件夹里创建一个manifest.yml文件:

applications:

- name: EaglePHPSQLOnPredix

 memory: 256M

 instances: 1

4. 命令行里运行

cf push

把这个应用部署到Predix云端。


5. 访问这个应用

https://eaglephpsqlonpredix.run.aws-jp01-pr.ice.predix.io/


有时候,看起来简单的事情,做起来也比想像中复杂。

起初我编写了一个简单的PHP文件“insert-pg.php”来执行一个简单的 “insert” SQL语句。

<?php

$dsn = "host=**** port=**** user=****password=**** dbname=****";

try

{

   $db= pg_connect($dsn);

   echo"Connected to the database successfully!";

   echo"<br />\n";

   $query= "INSERT INTO wechatmessage (message,customer) VALUES ('Hello','eagle tang')";

   $result= pg_query($db,$query) or die('Query failed: ' . pg_last_error());

   $cmdtuples= pg_affected_rows($result);

   echo$cmdtuples . " rows are affected.\n";

   pg_close($db);

}

catch (PDOException $e)

{

   echo$e->getMessage();

}

?>

我把这个文件部署到Predix云端,执行它,可什么事情也没有发生,没有出错信息,也没有预想的结果,我以为是代码里有问题,比如dsn语句或者insert sql语句等,可反复看也找不出错误。

我花了不少时间查找资料,但当时都一无所获,后来无意中发现PHP提供一个简单但功能强大的函数来检查运行时环境,这个函数就是phpinfo()。我意识到如果我的代码没有问题,那么问题可能是PHP运行环境导致的。于是我专门做了一个小PHP文件ShowPHPInfo.php来捕获运行环境信息,其实很简单:

<?php

      phpinfo();

?>

部署到Predix云端,

cf push

访问

https://eaglephpsqlonpredix.run.aws-jp01-pr.ice.predix.io/ShowPHPInfo.php

啊哈,这下可以清楚地看到PHP在Predix上的运行环境了


如果我们浏览一下这些环境信息,会发现没有出现PostgreSQL的连接驱动信息,这说明默认情况下Predix的PHP Buildpack没有提供对PostgreSQL访问连接的支持。一旦明白这点,通过互联网查询相关主题,我就找到了答案:我们要增加一个额外的配置文件composer.json来管理PHP运行环境。

具体来看一下composer.json的内容:

{

 "name": "EaglePhPSqlOnPredix/EaglePhPSqlOnPredix",

 "description": "EaglePhPSqlOnPredix is a Demo ofPHP+PosgreSQL.",

 "type": "Application",

 "license": "GPL-2.0+",

 "require": {

   "php": "5.5.*",

   "ext-mbstring": "*",

   "ext-pgsql": "*",

   "ext-mcrypt": "*",

   "ext-pdo": "*",

   "ext-pdo_pgsql": "*",

   "cloudfoundry-community/cf-helper-php": "1.4.*",

   "monolog/monolog": "~1.13"

  },

 "minimum-stability": "stable",

 "autoload": {

  }

}

增加好composer.json ,重新部署应用到Predix云端,再次运行ShowPHPInfo.php,我们就可以看到明显的区别了,一些PDO 和PostgreSQL的模块被加载进入了PHP的运行环境:


现在再运行“insert-pg.php” ,wow,可以正常工作了!


因此我建议在做云端PHP开发时,增加这个简单的ShowPHPInfo.php 文件捕获PHP运行环境,可能会提供更多有用的细节来帮助排错。

 

在使用中您有任何问题,请访问我们的论坛http://bbs.csdn.net/forums/GEPredix

GE数字集团的技术专家们会在线回答您的问题。

也请访问我们在CSDN的Predix专区http://predix.csdn.net/ 了解更多Predix的内容和相关活动。

 

 

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 手机看斗鱼怎么办办卡 微博昵称受限怎么办 被新浪屏蔽了怎么办 微博qq忘记密码怎么办 三星盖乐世忘记密码怎么办 三盖乐世4忘记密码怎么办 密码锁钥匙丢了怎么办 商标是tm标怎么办 环保合格证掉了怎么办 车子合格证丢了怎么办 大牙附近肿了怎么办 办好营业执照后怎么办商标 商标十年到期了怎么办 公司注册了商标怎么办 2018年属兔不适合结婚怎么办 交通事故对方没钱赔怎么办 滴滴快车出车祸怎么办 交警法院扣车怎么办 肇事逃逸没钱赔怎么办 撞死人无力赔偿怎么办 宝贝咳嗽很厉害怎么办 开车有人别车怎么办 判刑罚金交不起怎么办 罚金太多交不起怎么办 判决书上的罚金怎么办 刑事罚款不交怎么办 缎面的鞋脏了怎么办 夏天脸上长粉刺怎么办 鬃狮不吃东西怎么办 买二手车的车牌怎么办 榴莲打开了肉没熟怎么办 gmat的prep做完怎么办 电脑没ip地址怎么办 电脑ip地址缺失怎么办 cos还原不了人物怎么办 执行局抓人十五天不放人怎么办 笔记本电脑键盘按键错乱怎么办 靠墙倒立上不去怎么办 医院多收钱了怎么办 学生总是转笔怎么办 吃错东西呕吐怎么办