使用 PHP 的交互式 shell

2024-04-08

是否可以单独使用 PHP 创建交互式 shell?

我的意思是像数据库一样,Python https://en.wikipedia.org/wiki/Python_%28programming_language%29等等。如果是的话,怎么样?


是的,这是可能的。为了实现交互,程序必须能够等待并读取用户输入stdin https://en.wikipedia.org/wiki/Standard_streams#Standard_input_(stdin)。在 PHP 中,您可以读取stdin通过打开文件描述符'php://stdin' http://php.net/stdin。取自对不同问题的回答 https://stackoverflow.com/questions/5638677/php-5-second-countdown-cli-not-javascript/5639075#5639075,这是 PHP 中的交互式用户提示的示例(当然是从命令行运行时):

echo "Continue? (Y/N) - ";

$stdin = fopen('php://stdin', 'r');
$response = fgetc($stdin);
if ($response != 'Y') {
   echo "Aborted.\n";
   exit;
}

当然,要获得整行输入而不是单个字符,您需要fgets() http://php.net/fgets代替fgetc() http://php.net/fgetc。根据您的程序/shell 将执行的操作,整个程序可能会被构造为一个大的连续循环。希望这能让您了解如何开始。如果你想得到really花哨的(CLI 伪 GUI),你可以使用 ncurses http://devzone.zend.com/article/1083.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 PHP 的交互式 shell 的相关文章

  • 如何使用 preg_replace 实现带条件的模板

    我正在尝试实现一个管理界面 经理可以在其中创建网站元标记形成的高级规则 我有一个函数 它采用模板并用 registry 中的值替换其中的占位符 并在需要时应用修饰符 registy array profession name gt acto
  • 为什么 MySQLi 库本身不支持命名参数?

    正确的 MySQLi 参数化查询语法来自http php net manual en mysqli quickstart prepared statements php http php net manual en mysqli quick
  • 如何将从 date_parse 返回的日期数组转换回日期字符串

    我有一个由 php 例程 date parse 返回的格式的日期数组 我需要将此日期数组转换回日期字符串 我正在寻找一个与 date parse 例程相反的函数 这是一个接受日期数组作为参数并返回日期字符串的函数 http php net
  • Ioncube 编码的文件是否可以解码?

    我是一名 php 开发人员 我的客户计划分发一个使用 Php 开发的软件 计划使用 ioncube 或类似软件对文件进行编码 在谷歌搜索时 我发现很少有人解码这些文件 这些文件使用 ioncube 甚至其他软件进行编码 如果您询问是否可以破
  • PHP:如何检查 Guzzle 4 中的超时异常?

    如果请求期间发生错误 Guzzle 会引发异常 不幸的是 似乎没有特定于超时的错误 这对我来说很重要 因为我知道这些错误偶尔会发生 我想重试相应的请求 并且需要能够判断错误是否是由于超时而发生的 来自docs http docs guzzl
  • PHP ASCII 表库 [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 是否有一个事实上的标准库用于在 PHP 中创建 ASCII 表 我想要一些 PHP 代码 当传递数组或其
  • 为什么将 MySQL 凭据放在 www 目录之外? [复制]

    这个问题在这里已经有答案了 可能的重复 将核心类放在 Web 根目录之上 好还是坏主意 https stackoverflow com questions 3648739 putting core classes above the web
  • WordPress WooCommerce - 使用 WC_Cart 类将可变产品添加到购物车

    我正在尝试将可变产品添加到 WordPress 插件 WooCommerce 的购物车中 到目前为止 我已经能够添加单一 简单的产品 woocommerce gt cart gt add to cart product id quantit
  • 将“npm run start”的输出写入文件

    我想捕获的输出npm run start在一个文件中 我遇到了大量错误 我想更好地控制如何筛选输出 当我尝试时 npm run start gt log txt 我得到一个非常简短的文件 8 行 其结尾为 34m 39m 90m wdm 3
  • 下拉 24 小时选项值和 12 小时显示

    我需要创建一个时间数组 以便在 HTML 下拉列表中使用 数组键应采用 24 小时格式 值应采用 12 小时制 包含 am 和 pm 在数据库中我想存储 24 小时格式 有没有一种快速的方法来创建数组而不是每小时键入 example 00
  • Woocommerce 获取产品

    我使用以下代码从我的 WordPress 网站中的 WooCommerce 获取产品类别列表
  • setImageCompressionQuality 与 setCompressionQuality 之间有什么区别 - Imagick

    我在Imagick中找到了两种设置图像压缩质量的方法 A 设置图像压缩质量 B 设置压缩质量 所以我想知道哪一个是最好的以及为什么在以下条件下 我读到了setCompressionQuality方法仅适用于新图像 我正在尝试压缩文件 jpe
  • 将 Node.js(用于实时通知)添加到现有 PHP 应用程序

    我有一个现有的 PHP 应用程序 我需要向其中添加实时通知 为了实现这一点 我安装了node js 打算添加socket io以实现所有实时功能 然而 尽管在过去的三个小时里研究并试图弄清楚如何将两者结合起来 但我发现自己并没有更接近于获得
  • proc_open() 失败并显示“权限被拒绝”

    我正在尝试使用proc open 执行程序并打印结果 但是 我不断收到 许可被拒绝 的消息 已将脚本和可执行文件的 chmod 设置为 0777 但无济于事 ini get safe mode 是假的 可能出什么问题了 我正在使用 Cent
  • foreach 循环中 current() 的意外行为[重复]

    这个问题在这里已经有答案了 这是一个简单的循环 list array A B C D foreach list as var print current list Output demo http 3v4l org sBDjl BBBB O
  • 无需 cron 在后台发送邮件

    我想知道是否有一种方法可以运行 PHP 循环 以便在后台向订阅者发送几百封电子邮件 我的目标是格式化新闻通讯 单击发送 然后关闭浏览器或更改页面 当然 发送电子邮件的实际过程将在后台运行 不会因浏览器关闭而中断 我知道这可以通过 cron
  • 如何将 JSON 数据从 Android 发送到 php url?

    我想将登录信息从我的应用程序发送到 php url 因为这我的应用程序将崩溃 任何人都可以帮助我解决这个问题 这是我的服务器登录方法 我想将数据发送到此登录方法 Method public method login Parameters 3
  • 增加内存限制时出现奇怪的错误

    我使用的是共享托管环境 PHP 的默认内存限制是 32M 我在 Concrete5 设置方面遇到一些问题 当我尝试登录 Concrete5 的管理面板时 出现内存限制错误Allowed memory size of 33554432 byt
  • 如何从 PHP 中的字符串创建可能的字符串组合?

    如何从 PHP 中的字符串创建可能的字符串组合 Exp input abc output array 0 gt a 1 gt ab 2 gt abc 3 gt ac 4 gt acb 5 gt b 6 gt ba 7 gt bac 8 gt
  • 间歇性 PHP 抽象类错误

    我已经为此奋斗了一段时间 但无法弄清楚 也许其他人也有 或者 Slim PHP Apache 等这里有更深层次的问题 在正常工作几个小时后 我的 Slim 安装将开始给出所有路线均如此 致命错误 类 Slim Collection 包含 1

随机推荐

  • 使用 GM_xmlhttpRequest 交换访问令牌的 Quire 授权代码

    这可能是一个愚蠢的问题 我已尝试遵循quire api 博客 https quire io blog p Create Your Quire App with Quire API html但我仍然无法从 Tampermonkey javas
  • extjs 6.0 sencha cmd 仅编译我的 javascript 代码

    我使用 sencha extjs 6 0 它总是将所有 extjs 代码编译为单个文件 我需要的是 1 需要extjs被编译成一个文件 我知道需要哪些包 所以它可以是静态的 不需要改变 2 然后sencha cmd将我自己的javascri
  • 几个纪元后的tensorflow-GPU OOM问题

    我使用tensorflow与Nvidia Geforce 1060 6G内存 训练CNN 但出现OOM异常 前两个 epoch 的训练过程很好 但在第三个 epoch 时出现了 OOM 异常 2017 10 27 11 47 30 2191
  • 使用 hashlib sha1 进行 Python 加密的基础知识

    我正在努力完全理解加密的工作原理和编码方式 尤其是使用 python 我只是想了解基础知识并以最简单的形式创建代码 我将在两个不同的站点之间传递用户 ID 但显然我需要使用私钥对其进行加密 以便 Website2 知道它来自 Website
  • 找不到 com.android.tools.build:aapt2:4.0.0-6051327 [重复]

    这个问题在这里已经有答案了 当我在android studio中运行java文件时 会发生以下错误 Could not find com android tools build aapt2 4 0 0 6051327 Searched in
  • 如何在 Android Marshmallow 上获取 wifi 扫描结果?

    我想在我的棉花糖设备上获取 WiFi 扫描结果 首先 我所在的地区有很多 wifi AP 如果在棉花糖设备上获取 WiFi 扫描结果 添加ACCESS COARSE LOCATION允许 我的来源 Override public void
  • 将 Django 应用程序部署到谷歌应用程序引擎

    我已按照谷歌云平台指南中的步骤进行操作 但仍然收到权限错误 这表明调用者没有权限 请问我做错了什么 这是失控的gcloud config list region us central1 zone us central1 f core acc
  • 番石榴中供应商的逆

    我正在寻找的逆Supplier
  • 抽象类的公共构造函数有充分的理由吗

    直接调用构造函数来创建对象是不可能的abstract班级 的构造函数abstract类只能从派生类中调用 因此它seems对我来说 抽象类的构造函数必须是protected或包私有 后者用于限制对包内的派生类使用构造函数的特殊情况 然而 J
  • 如何在点击EditText外部后隐藏Android上的软键盘?

    好吧 每个人都知道要隐藏键盘 您需要实现 InputMethodManager imm InputMethodManager getSystemService INPUT METHOD SERVICE imm hideSoftInputFr
  • Mysql 嵌套查询和 GROUP BY

    我正在尝试对我的数据库执行以下查询 SELECT source Month as t1 GROUP CONCAT SELECT SUM amount FROM reports GROUP BY Month as amount FROM re
  • 如何在应用程序内计费

    我从事编程多年 也做过一些专业的编程项目 最近 我有一个朋友询问如何创建一个电子商务网站 但我不得不拒绝她 因为我从未开发过可以计费的网络应用程序 将来我可能还需要编写一个基于订阅的 Web 服务 我的问题是 我该如何开始计费 我从来没有找
  • Python - 测试属性抛出异常

    Given def test to check exception is thrown self Arrange c Class Act and Assert self assertRaises NameError c do somethi
  • FirebaseInitProvider:FirebaseApp 初始化失败

    我们已经遵循了将 Firebase 添加到您的 Android 项目 https firebase google com docs android setup但我们在 Firebase 控制台中看不到应用程序接收数据 当我们启动应用程序时
  • 非终止 while 循环

    我只是想知道一些事情 我有以下代码 include
  • 如何在 Perl 中使用符号引用?

    在 Perl 中 如果一个变量保存另一个变量的名称 我如何使用第一个变量来访问另一个变量 例如 让 name bob bob jerk perlfan 我应该如何使用 name 来了解 Bob 是一个什么样的人 虽然我不太确定 但我模糊的记
  • 如何使用弱链接 CocoaPods 库构建 iOS 框架

    我正在尝试使用 Xcode 6 提供的新模板来构建一个 iOS 框架 Test framework 用于创建 Cocoa Touch 框架 该框架具有在 Podfile 中指定的不同依赖项 如 AFNetworking 或 Facebook
  • App Engine 上的 Servlet 响应中与缓存相关的 HTTP 标头被覆盖

    我在应用程序引擎上有一个提供图像的servlet Servlet 正确设置 HTTP 标头值以指示应缓存图像 但 App Engine 会覆盖这些标头 从而导致图像不被缓存 请注意 相同的代码以前可以工作 但现在一段时间不能工作 App 引
  • 在加载页面的所有元素之前加载 Chrome 扩展

    我想在页面的所有元素加载之前 而不是之后 加载我的 Chrome 扩展 这可能吗 谢谢 如果通过扩展你的意思是内容脚本那么你最多可以做的是设置 run at document start 清单中的财产意味着 内容脚本 文件是在 css 中的
  • 使用 PHP 的交互式 shell

    是否可以单独使用 PHP 创建交互式 shell 我的意思是像数据库一样 Python https en wikipedia org wiki Python 28programming language 29等等 如果是的话 怎么样 是的