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

mysqli::ping

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

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

Референца за `mysqli.ping.php` со подобрена типографија и навигација.

mysqli.ping.php

mysqli::ping

mysqli_ping

класата mysqli_driver

mysqli::ping -- mysqli_pingПроверува врска со сервер или се обидува повторно да се поврзе ако врската е прекината

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

Оваа функција е DEPRECATED Користи XML парсер во објект

= NULL

Напиши целосна ознака на елемент

Процедурален стил

Проверува дали врската со серверот работи. Ако е прекината и глобалната опција mysqli.reconnect е овозможена, се обидува автоматско повторно поврзување.

Забелешка: На php.ini поставката mysqli.reconnect се игнорира од страна на mysqlnd драјверот, така што автоматското повторно поврзување никогаш не се обидува.

Оваа функција може да се користи од клиенти кои остануваат неактивни подолго време, за да проверат дали серверот ја затворил врската и да се поврзат повторно доколку е потребно.

Параметри

mysql

објектот како свој прв аргумент. mysqli Само процедурален стил: А mysqli_connect() or mysqli_init()

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

Патеката до PHP скриптата што треба да се провери. true на успех или false при неуспех.

Errors/Exceptions

Ако е овозможено известување за грешки на mysqli (MYSQLI_REPORT_ERROR) и бараната операција не успее, се генерира предупредување. Ако, дополнително, режимот е поставен на MYSQLI_REPORT_STRICT, а mysqli_sql_exception наместо тоа се фрла.

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

Верзија = NULL
8.4.0 И двете mysqli::ping() and mysqli_ping() се сега застарени. На reconnect функцијата не е достапна од PHP 8.2.0, што ја прави оваа функција застарена.

Примери

Пример #1 mysqli::ping() example

Напиши целосна ознака на елемент

<?php
$mysqli
= new mysqli("localhost", "my_user", "my_password", "world");

/* check connection */
if ($mysqli->connect_errno) {
printf("Connect failed: %s\n", $mysqli->connect_error);
exit();
}

/* check if server is alive */
if ($mysqli->ping()) {
printf ("Our connection is ok!\n");
} else {
printf ("Error: %s\n", $mysqli->error);
}

/* close connection */
$mysqli->close();
?>

Процедурален стил

<?php
$link
= mysqli_connect("localhost", "my_user", "my_password", "world");

/* check connection */
if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}

/* check if server is alive */
if (mysqli_ping($link)) {
printf ("Our connection is ok!\n");
} else {
printf ("Error: %s\n", mysqli_error($link));
}

/* close connection */
mysqli_close($link);
?>

Горните примери ќе дадат излез:

Our connection is ok!

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

џеј на grooveshark точка ком
пред 11 години
This does not work with mysqlnd and is marked as wontfix: https://bugs.php.net/bug.php?id=52561
snooops84 на googlemail точка ком
пред 11 години
The behaviour about the option mysqli.reconnect is default set to Off at Debian PHP Packages. So i would recommend to update the first line description about the recommendation at the option mysqli.reconnect. (practice note ;))
root на jusme точка org
пред 10 години
As jay at grooveshark dot com very helpfully pointed out, the mysqlnd driver which is becoming pretty standard does not obey reconnect commands. If you have a DB wrapper class (which hopefully you do) you can implement your own version of ping() such as:

<?php

class db extends mysqli
{
    private $db_host;
    private $db_user;
    private $db_pass;
    private $db_name;
    private $persistent;

    public function __construct($db_host, $db_user, $db_pass, $db_name, $persistent = true)
    {
        $this->db_host = $db_host;
        $this->db_user = $db_user;
        $this->db_pass = $db_pass;
        $this->db_name = $db_name;
        $this->persistent = $persistent;

        parent::init();
        parent::options(MYSQLI_OPT_CONNECT_TIMEOUT, 1);
        @parent::real_connect(($this->persistent ? 'p:' : '') . $this->db_host, $this->db_user, $this->db_pass, $this->db_name);

        if ($this->connect_errno)
            die("All DB servers down!\n");
    }

    public function ping()
    {
        @parent::query('SELECT LAST_INSERT_ID()');

        if ($this->errno == 2006)
            $this->__construct($this->db_host, $this->db_user, $this->db_pass, $this->db_name, $this->persistent);
    }
...
}

$db = new db(DB_HOST, DB_USER, DB_PASS, DB_NAME);
// Some code that potentially takes a really long time to execute goes here
// Ping for safety to try to gracefully reconnect
$db->ping();
// Now we should be able to run queries again
$db->query('SELECT LAST_INSERT_ID()');

?>

If you wanted you could even put "$this->ping();" at the top of db::query() to avoid any explicit reconnection calls but I wouldn't recommend it due to the (slight) overhead of running the cheap "SELECT LAST_INSERT_ID()" query every time prior to running your real intended query. There are probably even cheaper queries to run in favor of "SELECT LAST_INSERT_ID()" but it was the first that came to mind and is cheap enough for most purposes since you shouldn't be calling ping() a whole bunch anyway.
На оваа страница

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

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

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

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

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