- 浏览: 830403 次
- 性别:
- 来自: 南京
文章分类
最新评论
-
xieye:
jetty插件有好几个版本,1.6,1.7,1.8
我选的是用 ...
tapestry入门(翻译)3 导入项目到eclipse -
xieye:
还有,
注:第2部分时,需要先安装jetty,我自己在安装过程 ...
tapestry入门(翻译)3 导入项目到eclipse -
xieye:
说明一下:实际使用中,导入时我并没有错误。2、我把eclips ...
tapestry入门(翻译)3 导入项目到eclipse -
xieye:
其实还是有一些先决条件的。1是外部环境,2是进步是阶段性的(意 ...
(转载文章)如何愉悦起来:一位精神治疗师的见解 -
mandy_yanzi:
我都已经饿7天了坚持为了我的衣衣
身体健康的问题
早先在做PHP时就觉得有个地方不太爽,还发表文章表示不满。
jsp中用system.out.print如果是在eclipse中调试的话,eclipse会自动拦截系统输出流,
然后输出在控制台中,而http输出流则不受影响,php好像无此功能,
有一个syslog()函数,在windows下要到事件管理器里查看,实在用处不大。
所以只好输出到文件查看bug,也是除了debug模式,单元测试之外的最常用调试手段
然后构思了一个解决方案,共享之。
思路:建一个java程序并使之运行,其监听本地机器的某个端口。只要有输入就直接输出,
java程序的关闭,最好是改一下程序,让特别的请求正常关闭。
但现在简单的办法就是 点击控制台的红色按钮(表示jvm在启动)
点击控制台的clear按钮可以清空控制台。注意还可能有多个控制台。
只要程序开着,就可以接受调试信息,赶快试一试吧。
浏览器是外部的还是eclipse内部的无所谓。
条件,使用eclipse,打开php的socket扩展,
编写一个java程序
//: c15:MultiJabberServer.java // From 'Thinking in Java, 2nd ed.' by Bruce Eckel // www.BruceEckel.com. See copyright notice in CopyRight.txt. // A server that uses multithreading // to handle any number of clients. import java.io.*; import java.net.*; import java.text.SimpleDateFormat; import java.util.Date; /** * 该文件来源:《java编程思想(第2版)》,作者Bruce Eckel * 被修改了输出的几句话。,还有编码等 现成的php 的 eclipse 的控制台, * * 使php 在pdt环境下 本机调试更加方便 发表评论,请http://xieye.iteye.com/ * xieye 20081122 */ class ServeOneJabber extends Thread { private Socket socket; private BufferedReader in; private PrintWriter out; public ServeOneJabber(Socket s) throws IOException { socket = s; in = new BufferedReader(new InputStreamReader(socket.getInputStream(), "UTF-8")); // 重要啊 // Enable auto-flush: out = new PrintWriter( // 其实out没有用到 new BufferedWriter(new OutputStreamWriter(socket .getOutputStream())), true); // If any of the above calls throw an // exception, the caller is responsible for // closing the socket. Otherwise the thread // will close it. start(); // Calls run() } public void run() { try { synchronized (MultiJabberServer.lock1) { // lock1 是公用同步锁 // ,如果这个锁不加更糟 // 可以自己修改格式字符串 SimpleDateFormat sdf = new SimpleDateFormat( "yyyy-MM-dd HH:mm:ss"); System.out.print(sdf.format(new Date()) + " [debug] "); while (true) { String str = in.readLine(); if (str.equals(MultiJabberServer.S_EOF)) break; System.out.println(str); } } } catch (IOException e) { System.err.println("== 客户端强行关闭 =="); } finally { try { // System.err.println("=="); socket.close(); } catch (IOException e) { System.err.println("Socket not closed"); } } } } public class MultiJabberServer { static final int PORT = 8080; // 这就是端口,请保持与php代码一致 static final String S_EOF = "END"; // 这是停止字符串,要和php一致 public static final Object lock1 = new Object(); // 增加同步机制 public static void main(String[] args) throws IOException { ServerSocket s = new ServerSocket(PORT); System.out.println("PHP控制台启动。"); try { while (true) { // Blocks until a connection occurs: Socket socket = s.accept(); try { // synchronized(lock1){ // lock1 是公用同步锁 // 需要同步,但我不会 new ServeOneJabber(socket); // } } catch (IOException e) { // If it fails, close the socket, // otherwise the thread will close it: socket.close(); } } } finally { System.out.println("PHP控制台关闭。"); // 怎样才能让这句话执行呢? s.close(); } } } // /:~
在eclipse里建一个java工程,然后放进去,文件名为MultiJabberServer.java
右键,Run_as --> Java Application, 视图是php还是java都无所谓
于是下方控制台打开,显示php控制台启动
新建一个php项目或者直接拷贝到原有的php项目里,把一个php文件
<?php /** * 该文件包含了一个输出到php控制台的函数, 并演示了如何使用该函数 * 需要有一个java程序MultiJabberServer.java配合 * 需要eclipse开发环境pdt * 需要把php.ini 大约648行 的;extension=php_sockets.dll 前分号去掉 * php文件需要utf-8编码,或者使用utf8_encode 函数 * java文件编码应该是不限制的 * 唯一的遗憾是输出顺序不能控制,java高手快来改啊 * * 操作系统:我目前是windowsXP,其实linux应该一样用 * 我的php当前版本是php5.2.6,其实只要能用socket扩展即可 * java版本随便,只要eclipse能开即可 * eclipse版本随便,只要是pdt * * xieye 20081122 */ header('Content-Type:text/html; charset=utf-8'); /** * 加一个换行符 * * @param string $s */ function echobr($s) { echo $s."<br/>"; } /** * 输出到eclipse控制台的函数,使用前提见文件说明 * * 另外,想要输出的字符串不要有单独的一行是“END”,因为被保留用来判断, * 也可以自己修改,但要同时改java类 * * 我用java多线程,只是为了防止服务端的socket自动关闭 * * @param string $s 想要显示在eclipse控制台的字符 */ function s($s) { /* 指定调试输出的端口, 可以换掉 */ $service_port = '8080'; /* 指定本机IP */ $address = '127.0.0.1'; /* 停止字符串设置 */ $s_eof = "END"; /* 创建一个 TCP/IP socket对象.还是静态的 */ $socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP); if ($socket === false) { echobr( "socket创建失败: 原因: " . socket_strerror(socket_last_error()) ); return false; } else { echobr( " socket创建 OK."); } /* socket连接 */ $result = socket_connect($socket, $address, $service_port); if ($result === false) { echobr( "socket连接失败。 <br/> 原因: ($result) " . socket_strerror(socket_last_error($socket)) ); return false; } else { echobr( "socket 连接 OK."); } //把停止字符串附加上去 $in = $s . "\n" . $s_eof; socket_write($socket, $in, strlen($in)); //关闭socket; socket_close($socket); // sleep(1); } // 以下是演示,应该会在eclipse的console输出,注意:在控制台的顺序可能颠倒,要改java,不会 // 或者把上面的sleep(1)注释取消。 s('你好!'); $temp = var_export(array(1 => '红色', 2 => '蓝色'), true); s($temp); ?>
文件名随意,然后到浏览器里访问该php文件,会发现eclipse的console里的调试信息。
很不错吧,
有java高手请一定指教,如何确保显示的顺序和php里顺序相同。
非常感激!
xieye
20081123
- pdt_console.zip (3.3 KB)
- 下载次数: 49
评论
:idea:
其实java我也不太懂,十分感谢。
发表评论
-
召唤神龙 - 安装 centos 8, php 8, mysql 8, laravel 8 的整套 php 运行环境
2020-11-27 16:26 670本文编写时间:2020-11-27 传说集齐龙珠可以召唤神 ... -
centos8 使用阿里镜像快速安装php7.4套件
2020-11-15 00:48 806centos8 使用阿里镜像快速安装php7.4套件 本文只 ... -
centos7 使用阿里镜像快速安装php7.4套件
2020-11-15 00:32 1211本文只考虑centos7 今日 2020-11-16 rem ... -
composer常用命令
2020-11-05 14:46 1433列出当前全局配置 composer config -l -g ... -
期待centos8+php8 + mysql8 + laravel8,8888
2020-10-29 19:24 483期待centos8+php8 + mysql8 目前主要使用 ... -
ubuntu 安装 php7.4以及各类插件
2020-10-24 13:20 1084ubuntu 安装 php7.4以及各类插件 安装系统 最近 ... -
宝塔定义站点
2020-02-24 10:41 2宝塔定义站点。 1111111111111111111111 ... -
让php-fpm以root账号运行
2020-02-19 21:41 807一般来说,我们没有这种需求,但是当需要时, 可以让php-fp ... -
将代码部署到coding.net
2020-01-10 14:20 628coding.net 是一个git仓库,有免费有收费。 首先 ... -
php部署工具deployer技巧 - vendor目录创建
2020-01-06 12:06 884deployer是个好东西,可是每次都composer ,其实 ... -
自定义redis多个实例
2020-01-04 01:17 644假如多个项目部署到同一台服务器,有时会被redis的各项目前缀 ... -
推荐使用php的部署工具 deployer
2020-01-03 16:48 878php部署代码可以使用 https://deployer.or ... -
使用composer 类库 cachetool 清除opcache 的缓存
2020-01-03 16:38 958php的生产服务器上,需要把opche打开。 但有时,会被缓 ... -
laravel容器学习体会
2019-12-31 15:11 652根据文档与实测结果 假设我在app下建一个Services目 ... -
phalcon 自定义超强日志类
2019-12-18 10:00 823phalcon自带的日志文件类,有两个麻烦之处。 1、路径不能 ... -
自定义后台的使用
2019-12-18 05:22 420如果自己写后台,保存用户的表单请求值 所有的情况如下: 1 ... -
phalcon 自定义事件使用的多种方式
2019-12-16 20:43 777方法1:官方文档的方式。 这是控制器: public ... -
phalcon对控制器返回值的使用以输出json
2019-12-16 19:17 815在phalcon里,控制器的Action的方法的返回值没啥用。 ... -
phalcon数据库DB使用实例
2019-12-12 17:12 694整理了一下phalcon的db使用,写了个demo。 ... -
php-redis5.0降级成php-redis4.3
2019-08-22 00:01 887最新版本的php的redis插件,版本是5.0 但是可能会有 ...
相关推荐
下面是我释出的PHP eclipse控制台(console) 输出项目(Eclipse Console for PHP| EC4P )0.5版本,基本实现了在控制台(console)输出一些调试参数 的功能。 这样的功能对于小项目 ,PHP初学者 ,或者一些不方便页面...
Eclipse Console for PHP (简称EC4P) 是一个专门针对PHP的Eclipse插件,其v0.6版本为开发者提供了强大的控制台调试功能,极大地提升了开发效率。 EC4P的核心特性包括: 1. **控制台输出**:EC4P允许开发者通过`...
7. **控制台(Console)**:显示程序的输出信息。 8. **大纲(Outline)**:展示当前打开文件的结构。 9. **资源管理器(Package Explorer)**:查看和管理项目中的文件和文件夹。 二、创建Java项目 在Eclipse中...
启动Eclipse后,你会看到工作台(Workbench)由多个视图(View)组成,如项目探索器(Package Explorer)、大纲(Outline)、控制台(Console)、问题(Problems)等。这些视图可以自定义布局,以适应个人的工作习惯...
通过使用 RCP,开发者可以利用 Eclipse 已有的界面元素(如菜单、工具栏等)和功能组件(如控制台 Console),极大地减少了重复开发的工作量。此外,RCP 支持高度定制化,允许开发者根据具体需求调整用户界面和功能...
Eclipse界面由多个视图(View)组成,如项目探索器(Package Explorer)、代码编辑器(Editor)、问题视图(Problems)、控制台(Console)等。这些视图可以自由排列和隐藏,以满足个人工作习惯。 四、创建Java项目...
6. **控制台(Console)**:显示程序输出和错误信息。 7. **问题视图(Problems View)**:列出代码中的错误和警告。 二、Eclipse RCP(Rich Client Platform) Eclipse RCP是一种框架,用于构建桌面应用程序。它...
5. 控制台(Console):显示程序的输出信息。 6. 透视图(Perspectives):一种预设的窗口布局,可以快速地切换到特定的开发活动,例如调试、编辑或数据库操作。 Eclipse支持多种插件,增强了其功能。插件可以安装...
- **查看Maven控制台**:在Eclipse中,通过Window -> Show View -> Console打开控制台视图,切换至Maven的控制台Tab,可以监控Maven构建过程中的输出信息。 #### 六、总结 通过上述步骤,不仅能在Eclipse中成功...
- 工作台(Workbench):Eclipse的主界面,由多个视图(View)组成,如透视图(Perspective)、导航器(Navigator)、问题视图(Problems)、控制台(Console)等。 - 透视图(Perspective):不同类型的开发任务...
- **控制台(Console)**:显示程序运行时的输出信息。 - **问题视图(Problems)**:列出项目中的错误和警告。 3. **Eclipse Java开发** - **项目创建**:通过"File > New > Java Project"创建新的Java项目。 ...
4. **-debug**:开启调试模式,可以附加额外的调试信息,有助于问题定位。 5. **-nosplash**:禁止显示启动画面,加快启动速度。 6. **-nolazyregistrycacheloading**与**-noregistrycache**:这两个参数用于控制...
Eclipse的界面由多个视图(View)组成,包括透视图(Perspective)、编辑器(Editor)、导航器(Navigator)、控制台(Console)、问题视图(Problems)、包浏览器(Package Explorer)等。这些视图可以根据个人喜好...
Eclipse 是一个功能强大且广泛使用的集成开发环境(IDE),它支持多种编程语言,包括 Java、Python、C++、PHP 等。下面是 Eclipse 的一些使用技巧和概念: 一、Eclipse 的相关介绍 Eclipse 是由 IBM 开发的一个...
在遇到复杂的问题时,使用“console.log()”语句输出变量值也是常见的调试手段。此外,利用Source Maps可以在编译后的代码上进行调试,这对于处理过压缩或者转换的源码非常有用。 对于后端,开发者通常会依赖于IDE...