1

JAVA代码:

import java.io.*;
import java.net.*;

class Server {
   public static void main(String args[]) {
      try {
         ServerSocket srvr = new ServerSocket(51);
         Socket skt = srvr.accept();
         System.out.print("Server has connected!\n");
         PrintWriter out = 
                 new PrintWriter(skt.getOutputStream(), true);
         BufferedReader in = 
                 new BufferedReader(new InputStreamReader(skt.getInputStream()));
         if(in.readLine() == "xFF"){
             out.print("OK");
         }
         in.close();
         out.close();
         skt.close();
         srvr.close();
      }
      catch(Exception e) {
         System.out.print("Whoops! It didn't work!\n");
      }
   }
}

PHP代码:

<?php
    $con = fsockopen("127.0.0.1", 51, $errno, $errstr, 10);
    fwrite($con, "xFF");
    if(fread($con, 256) == "OK"){
        // Its Works
    }
?>

PHP 代码返回:致命错误:第 7 行 C:\xampp\htdocs\index.php 中的最大执行时间超过 60 秒

4

3 回答 3

1

if(in.readLine() == "xFF")=> 这将永远阻塞,因为您没有在 PHP 脚本中发送换行符。因此,您永远不会从您的 Java 应用程序中发送任何内容,并且 fread 将永远不会读取任何内容。fwrite($con, "xFF\n");应该做的伎俩。

于 2012-11-24T12:47:09.917 回答
0

如果我猜对了,您正在尝试使用 PHP 实现“TCP-Server”。这是不可能的,你认为是这样的:

通常,PHP 脚本将在 60 秒后终止。但是您可以通过 .htaccess 文件、php.ini 或使用 php 函数来覆盖此行为。

.htaccess

<IfModule mod_php5.c>
php_value max_execution_time 500
</IfModule>

php.ini

寻找max_execution_time与增加值的线。

PHP

set_time_limit(0);

但是我建议不要在 PHP 中实现服务器。PHP 脚本应该简单地快速传递一些数据并退出。

于 2012-11-24T12:43:24.780 回答
0

您的脚本超过了 60 秒的最大执行时间,像这样将其增加到 300 秒或更多秒

<?php
    ini_set('max_execution_time', 300); //max execution time set to 300 seconds
    $con = fsockopen("127.0.0.1", 51, $errno, $errstr, 10);
    fwrite($con, "xFF");
    if(fread($con, 256) == "OK"){
        // Its Works
    }
?>
于 2012-11-24T12:48:43.410 回答