2015-03-04 3 views
0

моего простого скрипта просто зависает, когда я вижу в поджигательPHP скрипт зависает при программировании сокетов

<?php 
require 'FirePHPCore/fb.php'; 
ob_start(); 

session_start(); 


FB::log('Log message'); 
//FB::info('Info message'); 
//FB::warn('Warn message'); 
//FB::error('Error message'); 


     FB::info('i m inside'); 

     $fileCount = $_POST['count']; 
     $data = "i-" . $fileCount; 

     FB::info('data for server ' . $data); 
     $address = '127.0.0.1'; 
    $port = 5555; 
    set_time_limit(0); 

    $socket = socket_create(AF_INET, SOCK_STREAM, getprotobyname('tcp')); 
    socket_connect($socket, $address, $port); 

     FB::info('socket connect '); 

    $len = strlen($data); 

    $status = socket_sendto($socket, $data, $len, 0, $address, $port); 


     $input = socket_read($socket, 1024); 
     echo $input;  

    socket_close($socket); 



    FB::log('i m deadout..'); 

Что является причиной этой проблемы, пожалуйста, помогите? спасибо. Сервер (java) работает на одном компьютере.

Обнаружена эта проблема, когда я увидел firebug, она просто отображает значок загрузки. И когда я удаляю часть программирования сокета, он работает правильно.

ответ

0

Соединения сокетов php по умолчанию открыты в режиме блокировки, и вам необходимо установить с помощью socket_set_nonblock. Например;

$this->soc = socket_create(AF_INET,SOCK_STREAM,SOL_TCP); 
socket_set_nonblock($this->soc); 

или

$socket = socket_create_listen(1223); 
socket_set_nonblock($socket); 

socket_accept($socket); 
+0

проблема была сервера на другом конце слушает, но не на 127.0.0.1, а на 0.0.0.0 – user2493303

+0

аааа ........... – unixmiah

Смежные вопросы