我有一个简单的PHP脚本,它调用sqlplus sqlldr文件并将数据转储到oracle中的表中 . 我把问题缩小到我认为是我的PHP脚本挂起的原因...这是:当我从php CLI运行时,系统命令不会回到php,而是挂在sqlplus的土地上 . 当从浏览器运行时,脚本按预期执行,然后我到达打印到浏览器的最终echo命令:我现在已经完成了运行 .

system('sqlplus username/password@tnsNameOfDatabase',$out);

echo $out;

system('exit',$out);

echo $out;

echo 'I am done running now';

从已加载sqlplus的命令行运行此脚本将正确连接到数据库,我从该连接的输出如下所示:

SQL*Plus: Release 12.1.0.2.0 Production on Wed Mar 8 15:37:34 2017

Copyright (c) 1982, 2014, Oracle. All rights reserved.

Last Successful login time: Wed Mar 08 2017 15:37:18 -05:00

Connected to:

Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production

With the Partitioning and Oracle Label Security options

现在...问题是这导致我的PHP程序挂起,我不能再回到PHP脚本 . 如何退出sqlplus CLI以返回运行的php脚本?

SQLPLUS中的典型退出命令只是“退出”,我尝试过(如上所示)...当手动运行时,会产生以下结果:

Disconnected from Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production

With the Partitioning and Oracle Label Security options

如何退出sqlplus并返回应该继续的脚本?任何帮助是极大的赞赏!

再次调用此sqlplus脚本的实际方法 - 从浏览器调用时工作得很好,但是从CLI调用时,它会在返回之前在此方法中挂起 .

private function loadTempData($object) {

$this->getLog()->appendLogFile('Constructed Control File: '.$object->getTempData()->getQaveLoadControl()->getFullPathFileName());

$this->getLog()->appendLogFile('Result saved in: '.$object->getTempData()->getExportFile()->getFullPathFileName());

$object->getInsertCommandFile()->appendContent('$ sqlldr '.$this->getPersistEnv()->getUserSlid().'/'.$this->getPersistEnv()->getPassword().'@'.$this->getPersistEnv()->getDatabase().' control='.$object->getTempData()->getQaveLoadControl()->getFullPathFileName().' log='.$object->getTempData()->getQaveLoadControl()->getFullPathFileName().'.log');

$this->getLog()->appendLogFile('Loading data to Temp Table');

$command = 'sqlplus '.$this->getPersistEnv()->getUserSlid().'/'.$this->getPersistEnv()->getPassword().'@'.$this->getPersistEnv()->getDatabase().' @'.$object->insertCommandFile->getFullPathFileName();

$this->getLog()->appendLogFile($command);

system($command,$output);

// this line does not make it into the log...

$this->getLog()->appendLogFile($output);

// this method does not return when run from CLI

return true;

}

php调用sqlldr失败,php system()命令调用sqlplus导致php挂起相关推荐

  1. Dubbo启动,调用方法失败【问题:调用超时】

    在一个调用dubbo里面的一个方法getAllSku时,显式调用超时. com.alibaba.dubbo.rpc.RpcException:Failed to invoke the method g ...

  2. java调用接口失败重调_Java调用WebService接口的常见错误

    1.如果出现这个错误:java.lang.NoClassDefFoundError: javax/xml/soap/SOAPException,原因是没有导入 axis2-saaj.jar包 2.如果 ...

  3. 调用 SSPI 失败,请参见内部异常,System.Net.Security.SslState.StartSendAuthResetSignal 异常解法

    部署系统,登录时,出现下面异常错误: 调用 SSPI 失败,请参见内部异常. 来源: System 实例:    在 System.Net.Security.SslState.StartSendAut ...

  4. php seekdir,perl 模式匹配总结和shell命令调用方法 (zz)

    正则表达式――perl模式匹配 Practiacl Extraction and Report Language 一.模式匹配操作符 1.tr/ / / 替换操作符不支持正则表达式 也不具备双引号替换 ...

  5. Java调用系统解压_记一次Java利用cmd命令调用WinRAR压缩文件-压缩文件

    前言 最近在和一个档案管理系统对接,需要把我方系统文件压缩成zip格式,通过ftp的方式upload到指定的服务器上,考虑到Java的平台无关性,一开始便使用Java自带的类库java.util.zi ...

  6. android+jni+构造函数,在JNI中调用构造函数失败Android

    我想从我的JNI Android代码调用构造函数;但不知何故,它失败,以下例外.. 我相信我失去了一些非常小的东西;但我无法弄清楚......任何人都可以请指出?在JNI中调用构造函数失败Androi ...

  7. (转)解决在firefox下js调用as失败问题

    解决在firefox下js调用as失败问题 自:http://www.cnblogs.com/mfryf/archive/2012/04/17/2453024.html 问题描述:写了一个js与as的 ...

  8. 0353-如何使用curl命令调用CM的API动态配置Yarn资源池

    温馨提示:如果使用电脑查看图片不清晰,可以使用手机打开文章单击文中的图片放大查看高清原图. Fayson的github: https://github.com/fayson/cdhproject 提示 ...

  9. 解决 conda 环境中调用 python 失败的问题

    解决 conda 环境中调用 python 失败的问题 问题描述 问题1 解决办法 问题2 解决办法 解决问题1 的对比操作 切换环境的正常命令流程 不退出次级环境导致执行python出错的命令流程 ...

最新文章

  1. 【Java】eclipse如何导入项目
  2. ios6.x越狱将不会再呈现了
  3. HDUOJ-2094-产生冠军
  4. html5中加入音频,使用HTML5在网页中嵌入音频和视频播放的基本方法
  5. rsync 配置详解
  6. [Java基础]获取Class类的对象
  7. Diango博客--8.解锁博客侧栏
  8. tensorflow9-mnist手写数字识别进阶-多层神经网络建模
  9. 【BZOJ 3172】单词
  10. spring cloud互联网分布式微服务云平台规划分析--spring cloud服务监控中心
  11. html 文本框 获取焦点事件,JS的文本输入框获得焦点与失去焦点的事件
  12. Word撤销键(Ctrl+z)无效的解决方法
  13. 局域网服务器配置一个无线路由,局域网怎么增加无线路由器
  14. 普通人的编辑利器——Vim
  15. 阿尔伯塔计算机硕士要求,阿尔伯塔大学计算机硕士专业介绍
  16. Matlab符号运算(符号的创建和简单运算、函数求导、不定积分和定积分、解方程组)代码和解释
  17. (java)跳台阶:一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。
  18. NFT艺术品交易平台
  19. sakila数仓实战案例
  20. matlab电流源,DC电压/电流源 GS200

热门文章

  1. mysql cluster常见问题访问_MySQL Cluster的常见问题
  2. ROS2——Windows上的安装笔记(legacy)
  3. Jetbrain系列IDE设置
  4. 各厂商磁编码器对比,AS5047、AS5048、AS5600、TLE5012、MA730
  5. 补充“为什么Scrum不行”
  6. 算法不会,尚能饭否之对分查找二叉树(又为快速排序之二叉树实现)
  7. Oracle 查看索引语句
  8. IT职场人生系列之十六:入职(新手篇)
  9. Python-将一个列表的数据复制到另一个列表中
  10. 解决网页中Waiting (TTFB)数据加载过慢的问题