I have recently started practicing with sockets on PHP and got an issue for which I find no documentation. Similar cases I've seen in C++, but not a clear answer to this. The code:

```
do {
    $input = socket_read($client, 12,PHP_BINARY_READ);
    echo $input;
} while(TRUE);

```

Is supposed to block on the socket (code for creation, bind, etc not included) and get either 12 bytes or whatever information is available from the other side.

Oddly I just get a '1' in the variable $input if 12 bytes are read. If I send from the client side more than 12 bytes then I receive '1[REST\_OF\_DATA]' in the value of $input.

Any idea why this is happening?

If I change this to more data and to PHP\_NORMAL\_READ then I correctly receive the data. 

PHP manual online does not say anything abou socket\_read returning '1'..

\*\*EDIT: Ok thanks for yout early answers :). I am saving to a file and reading (not echoing to browser) expecting any character. I think I may have just discovered something that could be good if someone with knowledge of C++ sockets can verify. Anyways, my read code actually was this (not what I posted above):

```
do {
    $input = ($seq_id == 0) ? socket_read($client, 12,PHP_BINARY_READ) : socket_read($client,1024,PHP_BINARY_READ);
    echo $input;
} while(TRUE);

```

I was expecting 12 bytes at the first read, then chunks of 1024, reason for that condition check. The weird '1' comes from this. If I replace that with the line I posted above the data is read normally. In fact, even reading like this:

```
$input = ($seq_ID == 0) ? socket_read($client,12,PHP_BINARY_READ) : socket_read($client, 12,PHP_BINARY_READ);

```

Results in : 1st read = '1' 2nd read = correct data, 3rd read = correct data..