· 7 years ago · Sep 12, 2018, 11:46 PM
1<?php
2
3$dbParams = [
4 'host' => 'localhost',
5 'dbname' => 'playground',
6 'username' => 'homestead',
7 'password' => 'secret',
8];
9
10$dsn = "mysql:host={$dbParams['host']};dbname={$dbParams['dbname']}";
11$pdo = new \PDO($dsn, $dbParams['username'], $dbParams['password']);
12$pdo->setAttribute( \PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION );
13$pdo->setAttribute(\PDO::ATTR_DEFAULT_FETCH_MODE, \PDO::FETCH_ASSOC);
14
15$pdo->exec('
16 CREATE TABLE IF NOT EXISTS temp_table (
17 id INT AUTO_INCREMENT PRIMARY KEY,
18 text VARCHAR (255) NOT NULL
19 )
20');
21
22$i = 0;
23while (true) {
24 $randStr = str_random(255);
25
26 $pdo->exec("insert into temp_table(text) values ('$randStr')");
27 $id = $pdo->lastInsertId();
28
29 file_put_contents(__FILE__ . '.log', 'Memory: ' . memory_get_usage_in_mb() . PHP_EOL, FILE_APPEND);
30 // In test1.php.log:
31 // Memory: 0.39
32 // Memory: 0.39
33 // Memory: 0.39
34 // And so 20,000 lines...
35
36 if ($i === 20000) {
37 break;
38 }
39 $i++;
40}
41
42function str_random($length = 16)
43{
44 $string = '';
45
46 while (($len = strlen($string)) < $length) {
47 $size = $length - $len;
48
49 $bytes = random_bytes($size);
50
51 $string .= substr(str_replace(['/', '+', '='], '', base64_encode($bytes)), 0, $size);
52 }
53
54 return $string;
55}
56
57function memory_get_usage_in_mb()
58{
59 return round(memory_get_usage() / 1024 / 1024, 2);
60}