mysqli_poll()-第三个参数是什么?

象征豆

在没有函数原型之外的任何文档的情况下,我都在努力寻找mysqli_poll()函数的第三个参数是什么。

int mysqli_poll ( 
     array &$read , 
     array &$error , 
     array &$reject , 
     int $sec 
     [, int $usec ] )

查看(C)源代码,它似乎在$ reject数组中填充了以下资源:

CONN_GET_STATE((*p)->data) <= CONN_READY 
   || CONN_GET_STATE((*p)->data) == CONN_QUIT_SENT

这是否意味着与服务器的连接正在关闭/关闭?

还有别的吗

是否应该预先填充用于检查断开连接的资源?还是将它们从$ read和$ error中自动添加?

象征豆

我建立了一个测试平台:

$l1 = mysqli_connect();
$l2 = mysqli_connect();
$l3 = mysqli_connect();

$s1 = "SELECT CURTIME()";
$s2 = "SELECT * FROM";   // will error #1064
$s3 = "SELECT SLEEP(10), CURTIME()";

mysqli_query($l1, $s1, MYSQLI_ASYNC);
mysqli_query($l2, $s2, MYSQLI_ASYNC);
mysqli_query($l3, $s3, MYSQLI_ASYNC);

$started=time();

for ($x=0; $x<5; $x++) {
        $ready=$reject=$errors = array($l1, $l2, $l3);
        print "\niteration $x at t+" . (time()-$started) . "\n";
        mysqli_poll($ready, $errors, $reject, 3);
        print "ready = " . count($ready) . "\n";
        foreach($ready as $r) {
           $c=mysqli_reap_async_query($r);
           print "err=" . mysqli_error($r) . " cnt=" . count($c) . "\n";
        };
        print "errors = " . count($errors) . "\n";
        print "reject = " . count($reject) . "\n";
        sleep(4);
 }

结果(以//开头的注释):

iteration 0 at t+0
ready = 1              // appears to be SELECT CURTIME()
err= cnt=1
errors = 0
reject = 0

iteration 1 at t+4
ready = 1              // appears to be SELECT * FROM
err=You have an error in your SQL syntax; check the manual that corresponds 
  to your MySQL server version for the right syntax to use near '' at line 
  1 cnt=1
errors = 0
reject = 1             // appears to be SELECT CURTIME() (results reaped)

iteration 2 at t+8
ready = 1              // appears to be SELECT SLEEP(10) despite 8 seconds elapsed
err= cnt=1
errors = 0
reject = 2             // appears to be SELECT CURTIME() + SELECT * FROM

iteration 3 at t+14
ready = 0
errors = 0
reject = 3

iteration 4 at t+21
ready = 0
errors = 0
reject = 3

即$ reject填充了已经获得结果的链接,而不是尚未准备好轮询的链接。

尝试使用无效的连接,该值将从所有数组中删除(未添加到$ reject中),

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

mysqli_poll如何工作?

useReducer中第三个参数的目的是什么?

std :: thread构造函数第三个模板参数的目的是什么?

Flutter ProxyProvider构建器函数中的第三个输入参数是什么

传递给侦听器的第三个参数是什么?

Go结构字段的第三个参数是什么?

getSupportLoaderManager(id,args,??)的第三个参数类型是什么

JavaScript中的forEach回调函数中的第三个参数的含义是什么

“ rx”或“ bx”作为ax.plot的第三个参数是什么意思?

可观察到的http.get上的Subscribe方法:第三个参数是什么?

Symfony表单组件。作为FormBuilderInterface :: add()方法的第三个参数,所有可用选项是什么

十六进制数字的第三个字节是什么?范围:读取API

Java中的第三个布尔状态是什么?

“ rw-”文件模式下的第三个符号是什么意思?

这第三个Azure令牌生存期指的是什么?

在2D向量中使用第三个[]的目的是什么?

存储第三个 API 的 JSON 响应的最佳方式是什么?

为什么在iterator_apply示例中需要第三个参数

为什么ioctl调用的原型使用unsigned long作为第三个参数?

第三个参数(false)在document.addEventListener(“ deviceready”,OnDeviceReady,false)中指示什么;

为什么 getLoaderManager.initLoader() 第三个参数 = 这是无效的?

文本阴影的第三个参数(模糊半径)有什么作用?

以下猫鼬查询中的第三个参数做什么?

什么是fstream open函数中的第三个参数

为什么在getopts bash中不解析第三个参数

什么是第三个参数意味着看起来/像 XInputGetBatteryInformation()

np.r_的第三个参数?(numpy)

Golang:Make函数和第三个参数

Haskell showFFloat的第三个参数