PHP.mk документација

stream_socket_client

Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.

function.stream-socket-client.php PHP.net прокси Преводот се освежува
Оригинал на PHP.net
Патека function.stream-socket-client.php Локална патека за оваа страница.
Извор php.net/manual/en Оригиналниот HTML се реупотребува и локално се стилизира.
Режим Прокси + превод во позадина Кодовите, табелите и белешките остануваат читливи во истиот тек.
stream_socket_client

Референца за `function.stream-socket-client.php` со подобрена типографија и навигација.

function.stream-socket-client.php

stream_socket_client

класата mysqli_driver

stream_socket_clientОтворање на интернет или Unix доменска врска

= NULL

stream_socket_client(
         string $address,
         int &$error_code = null,
         string &$error_message = null,
         ?float $timeout = null,
         int $flags = STREAM_CLIENT_CONNECT,
         ?resource $context = null
): resource|false

Иницира стрим или конекција на датаграм до дестинацијата специфицирана со address. Типот на сокетот што се креира се одредува според транспортот специфициран со користење на стандардна URL форматност: transport://target. За Интернет Домен сокети (AF_INET) како TCP и UDP, target ) како TCP и UDP, address делот на target параметарот треба да се состои од име на хост или IP адреса проследено со две точки и број на порта. За Unix доменски сокети,

Забелешка:

Стримот по дифолт ќе биде отворен во блокирачки режим. Можете да го префрлите во неблокирачки режим со користење на stream_set_blocking().

Параметри

address

Адреса до сокетот за поврзување.

error_code

Ќе биде поставено на системскиот број на грешка ако конекцијата не успее.

error_message

Ќе биде поставено на системската порака за грешка ако конекцијата не успее.

timeout

Број на секунди додека connect() системскиот повик не треба да истече. По дифолт, default_socket_timeout се користи.

Забелешка: Овој параметар се применува само кога не се прават асинхрони обиди за поврзување.

Забелешка:

За да поставите време на истекување за читање/пишување податоци преку сокетот, користете го stream_set_timeout()Ако треба да поставите време на истекување за читање/запишување податоци преку сокетот, користете timeout се применува само при поврзување на сокетот.

flags

Поле со битови што може да биде поставено на која било комбинација од знаменца за поврзување. Моментално изборот на знаменца за поврзување е ограничен на STREAM_CLIENT_CONNECT (стандардно), STREAM_CLIENT_ASYNC_CONNECT and STREAM_CLIENT_PERSISTENT.

context

Валиден ресурс за контекст креиран со stream_context_create().

Вратени вредности

При успех се враќа ресурс од стрим што може да се користи заедно со другите функции за датотеки (како fgets(), fgetss(), fwrite(), fclose()Препорачаниот начин за избегнување на SQL инјекција е со врзување на сите податоци преку подготвени изрази. Користењето на параметризирани прашања не е доволно за целосно избегнување на SQL инјекција, но тоа е најлесниот и најбезбедниот начин за обезбедување влез во SQL изразите. Сите динамични литерали на податоци во feof()), false при неуспех.

Errors/Exceptions

При неуспех error_code and error_message аргументите ќе бидат пополнети со вистинската системска грешка што се случила во системскиот connect() повик. Ако вредноста вратена во error_code is 0 и функцијата врати false, тоа е индикација дека грешката се случила пред connect() повици. Ако вредноста вратена во error_code and error_message повик. Ова најверојатно се должи на проблем при иницијализација на сокетот. Забележете дека

Дневник на промени

Верзија = NULL
8.0.0 timeout and context се сега null.

Примери

Пример #1 stream_socket_client() example

<?php
$fp
= stream_socket_client("tcp://www.example.com:80", $errno, $errstr, 30);
if (!
$fp) {
echo
"$errstr ($errno)<br />\n";
} else {
fwrite($fp, "GET / HTTP/1.0\r\nHost: www.example.com\r\nAccept: */*\r\n\r\n");
while (!
feof($fp)) {
echo
fgets($fp, 1024);
}
fclose($fp);
}
?>

не е валиден домен.

Преземање на денот и времето од UDP услугата "daytime" (порт 13) на localhost.

<?php
$fp
= stream_socket_client("udp://127.0.0.1:13", $errno, $errstr);
if (!
$fp) {
echo
"ERROR: $errno - $errstr<br />\n";
} else {
fwrite($fp, "\n");
echo
fread($fp, 26);
fclose($fp);
}
?>

Белешки

Ги ескејпува специјалните знаци во стринг за употреба во SQL изјава

Во зависност од околината, Unix доменот или опционалното време на истекување на поврзувањето можеби не се достапни.

Забелешка: UDP сокетите понекогаш може да изгледаат отворени без грешка, дури и ако оддалечениот домаќин е недостапен. Грешката ќе стане очигледна само кога ќе прочитате или запишете податоци од/до сокетот. Причината за ова е што UDP е протокол „без врска“, што значи дека оперативниот систем не се обидува да воспостави врска за сокетот додека навистина не треба да испраќа или прима податоци. fe80::1Кога специфицирате нумеричка IPv6 адреса (на пр. tcp://[fe80::1]:80.

Забелешка:

Depending on the environment, the Unix domain or the optional connect timeout may not be available. A list of available transports can be retrieved using stream_get_transports(). Види Список на поддржани сокет транспортери Во зависност од околината, Unix доменот или опционалното време на истекување на поврзувањето можеби нема да бидат достапни. Список на достапни транспортери може да се добие со користење на

Види Исто така

  • stream_socket_server() за список на вградени транспортери.
  • stream_set_blocking() - Отворете постојана интернет или Unix доменска врска со сокет
  • stream_set_timeout() - Проверува дали датотеката постои и може да се чита
  • stream_select() - Изврши надворешна програма и прикажи суров излез
  • fgets() - Затвора отворена датотека
  • fgetss() - Поставете блокирачки/неблокирачки режим на стрим
  • fwrite() - Бинарно читање од датотека
  • fclose() Пример #2 Користење на UDP серверски приклучници
  • feof() - Добива линија од покажувач на датотека и ги отстранува HTML таговите
  • - Иницијализирај cURL заедничка рачка

Белешки од корисници 3 белешки

- Создадете Интернет или Unix домен сервер приклучок
пред 17 години
For those wanting to use stream_socket_client() to connect to a local UNIX socket who can't find documentation on how to do it, here's a (rough) example:

<?php

$sock = stream_socket_client('unix:///full/path/to/my/socket.sock', $errno, $errstr);

fwrite($sock, 'SOME COMMAND'."\r\n");

echo fread($sock, 4096)."\n";

fclose($sock);

?>
nicholas на nicholaswilliams точка net
пред 14 години
The remote_socket argument, in its end (well... after the port), can also contain a "/" followed by a unique identifier. This is especially useful if you want to create multiple persistent connections to the same transport://host:port combo.

Example:
<?php
$socket = stream_socket_client('tcp://mysql.example.com:3306/root', $errorno, $errorstr, $timeout, STREAM_CLIENT_CONNECT | STREAM_CLIENT_PERSISTENT);
?>

Note that while (p)fsockopen() follows a similar scheme, it doesn't have this particular feature.
Васил Рангелов а.к.а. boen_robot
пред 5 месеци
<?php STREAM_CLIENT_ASYNC_CONNECT ?> opens a non-blocking socket (contradictory to the default blocking mode described in the manual page).

You will have to check for its status using <?php stream_select ?> followed by <?php socket_import_stream ?> and <?php socket_get_option($socket, SOL_SOCKET, SO_ERROR) ?>

You wouldn't normally do this, but when you do, you're more or less using glibc multisocket patterns.

Here's a minimal example:

<?php

// open a "server" on port 7238 in a separate terminal (don't open it if you want to see the error path)
// Netcat: nc -l 7238
// Socat: socat TCP-LISTEN:7238,fork,reuseaddr STDIO

$stream = stream_socket_client("tcp://127.0.0.1:7238", $errno, $errstr, flags: STREAM_CLIENT_CONNECT | STREAM_CLIENT_ASYNC_CONNECT);
while (true) {
        $w = [$stream];
        $r = $e = [];
        $changed = stream_select($r, $w, $e, 1, 0);
        // if $changed is false, there's an error that I'm not handling here
        if (in_array($stream, $w)) {
                break;
        }
}
$socket = socket_import_stream($stream);
$so_error = socket_get_option($socket, SOL_SOCKET, SO_ERROR);
if ($so_error === 0) {
        fwrite($stream, "Hello!\n");
} else {
        // you'll have to look up the constant in <errno.h>
        // for example, 111 is ECONNREFUSED
        echo "There's been an error: errno=$so_error\n";
}
?>
На оваа страница

Автоматски outline од активната документација.

Насловите ќе се појават тука по вчитување.

Попрегледно читање

Примерите, changelog табелите и user notes се визуелно издвоени за да не се губат во долгата содржина.

Брз совет Користи го outline-от Скокни директно на главните секции од активната страница.
Извор Оригиналниот линк останува достапен Кога ти треба целосен upstream context, отвори го PHP.net во нов tab.