timeout.phpt 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. --TEST--
  2. PDO_DBLIB: Set query timeouts
  3. --SKIPIF--
  4. <?php
  5. if (!extension_loaded('pdo_dblib')) die('skip not loaded');
  6. if (getenv("SKIP_SLOW_TESTS")) die("skip slow test");
  7. require dirname(__FILE__) . '/config.inc';
  8. ?>
  9. --FILE--
  10. <?php
  11. require dirname(__FILE__) . '/config.inc';
  12. $sql = 'WAITFOR DELAY \'00:00:02\'';
  13. // querying without a timeout will succeed
  14. $stmt = $db->prepare($sql);
  15. if ($stmt->execute()) {
  16. echo "OK\n";
  17. }
  18. // regular timeout attribute, set after instance created, will affect query timeout, causing this query to fail
  19. $db = new PDO($dsn, $user, $pass);
  20. $db->setAttribute(PDO::ATTR_TIMEOUT, 1);
  21. $stmt = $db->prepare($sql);
  22. if (!$stmt->execute()) {
  23. echo "OK\n";
  24. // expect some kind of error code
  25. if ($stmt->errorCode() != '00000') {
  26. echo "OK\n";
  27. }
  28. }
  29. // pdo_dblib-specific timeout attribute, set after instance created, will control query timeout, causing this query to fail
  30. $db = new PDO($dsn, $user, $pass);
  31. $db->setAttribute(PDO::DBLIB_ATTR_QUERY_TIMEOUT, 1);
  32. $stmt = $db->prepare($sql);
  33. if (!$stmt->execute()) {
  34. echo "OK\n";
  35. // expect some kind of error code
  36. if ($stmt->errorCode() != '00000') {
  37. echo "OK\n";
  38. }
  39. }
  40. // regular timeout attribute will affect query timeout, causing this query to fail
  41. $db = new PDO($dsn, $user, $pass, [PDO::ATTR_TIMEOUT => 1]);
  42. $stmt = $db->prepare($sql);
  43. if (!$stmt->execute()) {
  44. echo "OK\n";
  45. // expect some kind of error code
  46. if ($stmt->errorCode() != '00000') {
  47. echo "OK\n";
  48. }
  49. }
  50. // pdo_dblib-specific timeout attribute will control query timeout, causing this query to fail
  51. $db = new PDO($dsn, $user, $pass, [PDO::DBLIB_ATTR_QUERY_TIMEOUT => 1]);
  52. $stmt = $db->prepare($sql);
  53. if (!$stmt->execute()) {
  54. echo "OK\n";
  55. // expect some kind of error code
  56. if ($stmt->errorCode() != '00000') {
  57. echo "OK\n";
  58. }
  59. }
  60. ?>
  61. --EXPECT--
  62. OK
  63. OK
  64. OK
  65. OK
  66. OK
  67. OK
  68. OK
  69. OK
  70. OK