コード例 #1
0
static int php_pdo_connect_pool_close(cpClient *cli) {
    char str[100] = {0};
    CON_FORMART_KEY(str, cli->port);
    if (zend_hash_del(&EG(persistent_list), str, strlen(str)) == FAILURE) {//很奇怪 用不了宏定义
        zend_error(E_WARNING, "del hash error!");
        return FAILURE;
    }
    return SUCCESS;
}
コード例 #2
0
int connect_pool_perisent(cpClient** cli, zval* zres, int port) {
    zend_rsrc_list_entry sock_le;
    int ret;
    (*cli) = (cpClient*) pecalloc(sizeof (cpClient), 1, 1);
    if (cpClient_create((*cli)) < 0) {
        zend_error(E_ERROR, "pdo_connect_pool: create sock fail. Error: %s [%d]", strerror(errno), errno);
    }
    (*cli)->port = port;
    ret = cpClient_connect((*cli), "127.0.0.1", (*cli)->port, (float) 100, 0); //所有的操作100s超时
    if (ret < 0) {
        pefree(*cli, 1);
        return -1;
    }
    sock_le.type = le_cli_connect_pool;
    sock_le.ptr = (*cli);
    ZEND_REGISTER_RESOURCE(zres, (*cli), le_cli_connect_pool);
    char str[100] = {0};
    CON_FORMART_KEY(str, (*cli)->port);
    zend_hash_update(&EG(persistent_list), str, strlen(str), (void*) &sock_le, sizeof (zend_rsrc_list_entry), NULL);
    return 1;
}
コード例 #3
0
ファイル: connect_pool_client.c プロジェクト: caoge/php-cp
static void release_worker(zval *object)
{
    zend_rsrc_list_entry *p_sock_le;
    zval **pool_port;
    if (zend_hash_find(Z_OBJPROP_P(object), ZEND_STRS("pool_port"), (void **) &pool_port) == SUCCESS)
    {
        char str[100] = {0};
        CON_FORMART_KEY(str, (int) Z_LVAL_PP(pool_port));
        if (zend_hash_find(&EG(persistent_list), str, strlen(str), (void **) &p_sock_le) == SUCCESS)
        {
            send_oob2proxy(p_sock_le);
        }
        else
        {
            php_error_docref(NULL TSRMLS_CC, E_ERROR, "p_sock_le can not find");
        }
    }
    else
    {
        php_error_docref(NULL TSRMLS_CC, E_ERROR, "pool_port can not find");
    }
}
コード例 #4
0
ファイル: connect_pool_client.c プロジェクト: caoge/php-cp
void* connect_pool_perisent(zval* zres, int port)
{
    zend_rsrc_list_entry sock_le;
    int ret;
    cpClient* cli = (cpClient*) pecalloc(sizeof (cpClient), 1, 1);
    if (cpClient_create(cli) < 0)
    {
        php_error_docref(NULL TSRMLS_CC, E_ERROR, "pdo_connect_pool: create sock fail. Error: %s [%d]", strerror(errno), errno);
    }
    cli->port = port;
    ret = cpClient_connect(cli, "127.0.0.1", cli->port, (float) 100, 0); //所有的操作100s超时
    if (ret < 0)
    {
        pefree(cli, 1);
        return NULL;
    }
    sock_le.type = le_cli_connect_pool;
    sock_le.ptr = cli;
    ZEND_REGISTER_RESOURCE(zres, cli, le_cli_connect_pool);
    char str[100] = {0};
    CON_FORMART_KEY(str, cli->port);
    zend_hash_update(&EG(persistent_list), str, strlen(str), (void*) &sock_le, sizeof (zend_rsrc_list_entry), NULL);
    return cli;
}