Annotation of embedaddon/php/ext/mysql/tests/mysql_max_persistent.phpt, revision 1.1.1.1

1.1       misho       1: --TEST--
                      2: mysql_[p]connect() - max_links/max_persistent
                      3: --SKIPIF--
                      4: <?php
                      5: require_once('skipif.inc');
                      6: require_once('skipifconnectfailure.inc');
                      7: require_once('table.inc');
                      8: 
                      9: mysql_query('DROP USER pcontest', $link);
                     10: if (!mysql_query('CREATE USER pcontest IDENTIFIED BY "pcontest"', $link)) {
                     11:        printf("skip Cannot create second DB user [%d] %s", mysql_errno($link), mysql_error($link));
                     12:        mysql_close($link);
                     13:        die();
                     14: }
                     15: 
                     16: // we might be able to specify the host using CURRENT_USER(), but...
                     17: if (!mysql_query(sprintf("GRANT SELECT ON TABLE %s.test TO pcontest@'%%'", $db), $link)) {
                     18:        printf("skip Cannot GRANT SELECT to second DB user [%d] %s", mysql_errno($link), mysql_error($link));
                     19:        mysql_query('REVOKE ALL PRIVILEGES, GRANT OPTION FROM pcontest', $link);
                     20:        mysql_query('DROP USER pcontest', $link);
                     21:        mysql_close($link);
                     22:        die();
                     23: }
                     24: mysql_close($link);
                     25: ?>
                     26: --INI--
                     27: mysql.max_links=2
                     28: mysql.allow_persistent=1
                     29: mysql.max_persistent=1
                     30: --FILE--
                     31: <?php
                     32: require_once('connect.inc');
                     33: 
                     34: function my_connect($offset, $host, $user, $passwd, $db, $port, $socket) {
                     35:        if ($socket)
                     36:                $host = sprintf("%s:%s", $host, $socket);
                     37:        else if ($port)
                     38:                $host = sprintf("%s:%s", $host, $port);
                     39: 
                     40: 
                     41:        $link = mysql_pconnect($host, $user, $passwd);
                     42:        if (!$link) {
                     43:                printf("[%03d] Cannot connect using host '%s', user '%s', password '****', [%d] %s\n",
                     44:                        $offset, $host, $user, $passwd,
                     45:                        mysql_errno(), mysql_error());
                     46:                return false;
                     47:        }
                     48: 
                     49:        if (!mysql_select_db($db, $link))
                     50:                return false;
                     51: 
                     52:        return $link;
                     53: }
                     54: 
                     55: $links = array();
                     56: 
                     57: // try to open 2 links
                     58: $links[0] = my_connect(10, $host, $user, $passwd, $db, $port, $socket);
                     59: $links[1] = my_connect(20, $host, 'pcontest', 'pcontest', $db, $port, $socket);
                     60: if (false !== $links[1])
                     61:        printf("[030] Last connection should not have been allowed!\n");
                     62: 
                     63: // free some links but let index 1 remain
                     64: unset($links[1]);
                     65: mysql_close($links[0]);
                     66: unset($links[0]);
                     67: 
                     68: // should be allowed -> only open connection
                     69: $links[0] = my_connect(40, $host, $user, $passwd, $db, $port, $socket);
                     70: var_dump($links);
                     71: 
                     72: mysql_query('REVOKE ALL PRIVILEGES, GRANT OPTION FROM pcontest', $links[0]);
                     73: mysql_query('DROP USER pcontest', $links[0]);
                     74: 
                     75: mysql_close($links[0]);
                     76: print "done!\n";
                     77: ?>
                     78: --CLEAN--
                     79: <?php
                     80: // connect + select_db
                     81: require_once("connect.inc");
                     82: if (!$link = my_mysql_connect($host, $user, $passwd, $db, $port, $socket)) {
                     83:        printf("[c001] Cannot connect to the server using host=%s/%s, user=%s, passwd=***, dbname=%s, port=%s, socket=%s\n",
                     84:          $host, $myhost, $user, $db, $port, $socket);
                     85: }
                     86: 
                     87: @mysql_query('REVOKE ALL PRIVILEGES, GRANT OPTION FROM pcontest', $link);
                     88: @mysql_query('DROP USER pcontest', $link);
                     89: 
                     90: mysql_close($link);
                     91: ?>
                     92: --EXPECTF--
                     93: Warning: mysql_pconnect(): Too many open persistent links (1) in %s on line %d
                     94: [020] Cannot connect using host '%s', user '%s', password '****', [0] 0
                     95: array(1) {
                     96:   [0]=>
                     97:   resource(%d) of type (mysql link persistent)
                     98: }
                     99: done!

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>