Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

PHP Network socket_set_blocking() Function



The PHP Network socket_set_blocking() function is used to change the behavior of a socket. A socket acts as a communication link between two systems and the function defines how the link operates. It is an alias, therefore it performs the same effect as stream_set_blocking. This lets you indicate whether a socket is "blocking" or "non-blocking."

If a socket is "blocking," it will wait until it has received all of the necessary data before proceeding. This can make the program run more slowly, but it makes sure all data is collected. If a socket is "non-blocking," it will not wait and will continue to work even when no data is available. This can speed up the program, but it requires careful management of missing data.

This function helps in network programming to control how your software connects with other computers. It works with all major PHP versions, including PHP 4, 5, 7, and 8. Knowing when to use "blocking" or "non-blocking" depends on your program's needs and speed.

Syntax

Below is the syntax of the PHP Network socket_set_blocking() function −

bool socket_set_blocking ( resource $socket, bool $mode )

Parameters

Here are the parameters of the socket_set_blocking() function −

  • $socket − (Required) It is the socket resource that you want to change.

  • $mode − (Required) This is a boolean value. Use true to set the socket to "blocking" mode. Use false to set the socket to "non-blocking" mode.

Return Value

The socket_set_blocking() function returns TRUE, if the function successfully changes the mode of the socket. And returns FALSE if something goes wrong, like an invalid socket or any other error.

PHP Version

First introduced in core PHP 4, the socket_set_blocking() function continues to function easily in PHP 5, PHP 7, and PHP 8.

Example 1

First we will show you the basic example of the PHP Network socket_set_blocking() function to set a socket in non blocking mode. So the below program creates a simple socket and sets it to non-blocking mode. It basically shows how to change the behavior of a socket.

<?php
   // Create a socket
   $socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);

   // Set the socket to non-blocking mode
   if ($socket && socket_set_blocking($socket, false)) {
      echo "Socket is now in non-blocking mode.";
   } else {
      echo "Failed to set socket to non-blocking mode.";
   }
?>

Output

Here is the outcome of the following code −

Socket is now in non-blocking mode.

Example 2

In the below PHP code we will use the socket_set_blocking() function and switch between blocking and non blocking modes. The below program creates a socket, switches it between blocking and non-blocking modes and confirms each change.

<?php
   // Create a socket
   $socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);

   if ($socket) {
      // Set to non-blocking mode
      socket_set_blocking($socket, false);
      echo "Socket set to non-blocking mode.\n";

      // Switch back to blocking mode
      socket_set_blocking($socket, true);
      echo "Socket set back to blocking mode.\n";
   } else {
      echo "Failed to create socket.";
   }
?> 

Output

This will generate the below output −

Socket set to non-blocking mode.
Socket set back to blocking mode.
php_function_reference.htm
Advertisements