Last active
December 1, 2022 20:52
-
-
Save iods/70b8fedff564c7f72905d9643b1e458d to your computer and use it in GitHub Desktop.
[PHP] 7* Helpers
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
function reverseArray($arr1) { | |
$size = count($arr1); | |
for($i = $size -1; $i >= 0; $i--) { | |
$arr1[$size] = $arr1[$i]; | |
unset($arr1[$i]); | |
$size++ | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Turn off all error reporting | |
error_reporting(0); | |
// Report simple running errors | |
error_reporting(E_ERROR | E_WARNING | E_PARSE); | |
// Reporting E_NOTICE can be good too (to report uninitialized | |
// variables or catch variable name misspellings ...) | |
error_reporting(E_ERROR | E_WARNING | E_PARSE | E_NOTICE); | |
// Report all errors except E_NOTICE | |
error_reporting(E_ALL & ~E_NOTICE); | |
// Report all PHP errors (see changelog) | |
error_reporting(E_ALL); | |
// Report all PHP errors | |
error_reporting(-1); | |
// Same as error_reporting(E_ALL); | |
ini_set('error_reporting', E_ALL); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
interface TestInterface | |
{ | |
public function getContent(): string; | |
public function setContent(string $content); | |
} | |
class Test implements TestInterface | |
{ | |
private $content; | |
public function __construct(string $content) { | |
$this->setContent($content); | |
} | |
public function getContent(): string { | |
return $this->content; | |
} | |
public function setContent(string $content) { | |
$this->content = $content; | |
} | |
} | |
class TestFactory | |
{ | |
public static function createTest(string $content): Text { | |
return new Test($content); | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
interface TestInterface | |
{ | |
public function getContent(): string; | |
public function setContent(string $content); | |
} | |
class Test implements TestInterface | |
{ | |
private $content; | |
public function __construct(string $content) { | |
$this->setContent($content); | |
} | |
public function getContent(): string { | |
return $this->content; | |
} | |
public function setContent(string $content) { | |
$this->content = $content; | |
} | |
} | |
class TestFactory | |
{ | |
public static function createTest(string $content): Test { | |
return new Test($content); | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Current Magento 2.2.2 PHP 7.4 with preload is 10%+ faster | |
Comparison of means | |
PHP 7.4 with preload is 11.07% faster then PHP 7.3 | |
PHP 7.4 with preload is 13.25% faster then PHP 7.1 | |
Sample 1 PHP 7.4 with Preload | |
Mean: | |
0.458 | |
Standard deviation: | |
0.0411 | |
Sample size: | |
1000 | |
Sample 2 PHP 7.3 | |
Mean: | |
0.515 | |
Standard deviation: | |
0.0877 | |
Sample size: | |
1000 | |
Sample 2 PHP 7.1 | |
Mean: | |
0.528 | |
Standard deviation: | |
0.0361 | |
Sample size: | |
1000 | |
Results | |
Difference 0.057 | |
Standard error 0.003 95% CI 0.0510 to 0.0630 t-statistic 18.611 DF 1998 Significance level P < 0.0001 | |
Data of the test | |
With preload | |
:php kir.morozov$ php-edge-unload && sleep 3s && ab -n 100 http://m2.loc2/ | |
---> Loading startupitem 'php73-fpm' for php73-fpm | |
This is ApacheBench, Version 2.3 <$Revision: 1826891 $> | |
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/ | |
Licensed to The Apache Software Foundation, http://www.apache.org/ | |
Benchmarking m2.loc2 (be patient).....done | |
Server Software: nginx/1.15.9 | |
Server Hostname: m2.loc2 | |
Server Port: 80 | |
Document Path: / | |
Document Length: 215496 bytes | |
Concurrency Level: 1 | |
Time taken for tests: 51.540 seconds | |
Complete requests: 100 | |
Failed requests: 0 | |
Total transferred: 21619800 bytes | |
HTML transferred: 21549600 bytes | |
Requests per second: 1.94 [#/sec] (mean) | |
Time per request: 515.395 [ms] (mean) | |
Time per request: 515.395 [ms] (mean, across all concurrent requests) | |
Transfer rate: 409.65 [Kbytes/sec] received | |
Connection Times (ms) | |
min mean[+/-sd] median max | |
Connect: 0 0 0.1 0 1 | |
Processing: 398 515 294.2 460 3323 | |
Waiting: 397 513 294.2 459 3322 | |
Total: 399 515 294.2 460 3323 | |
Percentage of the requests served within a certain time (ms) | |
50% 460 | |
66% 501 | |
75% 518 | |
80% 534 | |
90% 607 | |
95% 720 | |
98% 801 | |
99% 3323 | |
100% 3323 (longest request) | |
:php kir.morozov$ sleep 3s && ab -n 100 http://m2.loc2/ | |
This is ApacheBench, Version 2.3 <$Revision: 1826891 $> | |
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/ | |
Licensed to The Apache Software Foundation, http://www.apache.org/ | |
Benchmarking m2.loc2 (be patient).....done | |
Server Software: nginx/1.15.9 | |
Server Hostname: m2.loc2 | |
Server Port: 80 | |
Document Path: / | |
Document Length: 215496 bytes | |
Concurrency Level: 1 | |
Time taken for tests: 46.709 seconds | |
Complete requests: 100 | |
Failed requests: 0 | |
Total transferred: 21619800 bytes | |
HTML transferred: 21549600 bytes | |
Requests per second: 2.14 [#/sec] (mean) | |
Time per request: 467.089 [ms] (mean) | |
Time per request: 467.089 [ms] (mean, across all concurrent requests) | |
Transfer rate: 452.01 [Kbytes/sec] received | |
Connection Times (ms) | |
min mean[+/-sd] median max | |
Connect: 0 0 0.1 0 1 | |
Processing: 392 466 108.6 445 1462 | |
Waiting: 390 465 108.6 444 1460 | |
Total: 392 467 108.6 446 1462 | |
Percentage of the requests served within a certain time (ms) | |
50% 446 | |
66% 466 | |
75% 481 | |
80% 491 | |
90% 521 | |
95% 557 | |
98% 585 | |
99% 1462 | |
100% 1462 (longest request) | |
:php kir.morozov$ sleep 3s && ab -c2 -n 1000 http://m2.loc2/ | |
This is ApacheBench, Version 2.3 <$Revision: 1826891 $> | |
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/ | |
Licensed to The Apache Software Foundation, http://www.apache.org/ | |
Benchmarking m2.loc2 (be patient) | |
Completed 100 requests | |
Completed 200 requests | |
Completed 300 requests | |
Completed 400 requests | |
Completed 500 requests | |
Completed 600 requests | |
Completed 700 requests | |
Completed 800 requests | |
Completed 900 requests | |
Completed 1000 requests | |
Finished 1000 requests | |
Server Software: nginx/1.15.9 | |
Server Hostname: m2.loc2 | |
Server Port: 80 | |
Document Path: / | |
Document Length: 215496 bytes | |
Concurrency Level: 2 | |
Time taken for tests: 258.342 seconds | |
Complete requests: 1000 | |
Failed requests: 0 | |
Total transferred: 216198000 bytes | |
HTML transferred: 215496000 bytes | |
Requests per second: 3.87 [#/sec] (mean) | |
Time per request: 516.683 [ms] (mean) | |
Time per request: 258.342 [ms] (mean, across all concurrent requests) | |
Transfer rate: 817.25 [Kbytes/sec] received | |
Connection Times (ms) | |
min mean[+/-sd] median max | |
Connect: 0 0 0.2 0 3 | |
Processing: 399 515 87.7 511 1635 | |
Waiting: 397 512 87.4 509 1631 | |
Total: 400 515 87.7 511 1635 | |
Percentage of the requests served within a certain time (ms) | |
50% 511 | |
66% 526 | |
75% 532 | |
80% 539 | |
90% 563 | |
95% 604 | |
98% 722 | |
99% 869 | |
100% 1635 (longest request) | |
With PHP Preload ```bash :php kir.morozov$ php-edge-load && sleep 3s && ab -n 100 http://m2.loc2/ ---> Unloading startupitem 'php73-fpm' for php73-fpm This is ApacheBench, Version 2.3 <$Revision: 1826891 $> Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/ Licensed to The Apache Software Foundation, http://www.apache.org/ | |
Benchmarking m2.loc2 (be patient).....done | |
Server Software: nginx/1.15.9 Server Hostname: m2.loc2 Server Port: 80 | |
Document Path: / Document Length: 210652 bytes | |
Concurrency Level: 1 Time taken for tests: 49.679 seconds Complete requests: 100 Failed requests: 0 Total transferred: 21135800 bytes HTML transferred: 21065200 bytes Requests per second: 2.01 [#/sec] (mean) Time per request: 496.787 [ms] (mean) Time per request: 496.787 [ms] (mean, across all concurrent requests) Transfer rate: 415.48 [Kbytes/sec] received | |
Connection Times (ms) min mean[+/-sd] median max Connect: 0 0 0.1 0 1 Processing: 369 496 370.2 440 4092 Waiting: 367 494 370.1 438 4090 Total: 369 496 370.2 440 4093 | |
Percentage of the requests served within a certain time (ms) 50% 440 66% 452 75% 472 80% 486 90% 541 95% 667 98% 803 99% 4093 100% 4093 (longest request) :php kir.morozov$ sleep 3s && ab -c2 -n 1000 http://m2.loc2/ This is ApacheBench, Version 2.3 <$Revision: 1826891 $> Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/ Licensed to The Apache Software Foundation, http://www.apache.org/ | |
Benchmarking m2.loc2 (be patient) Completed 100 requests Completed 200 requests Completed 300 requests Completed 400 requests Completed 500 requests Completed 600 requests Completed 700 requests Completed 800 requests Completed 900 requests Completed 1000 requests Finished 1000 requests | |
Server Software: nginx/1.15.9 Server Hostname: m2.loc2 Server Port: 80 | |
Document Path: / Document Length: 210652 bytes | |
Concurrency Level: 2 Time taken for tests: 229.723 seconds Complete requests: 1000 Failed requests: 0 Total transferred: 211358000 bytes HTML transferred: 210652000 bytes Requests per second: 4.35 [#/sec] (mean) Time per request: 459.445 [ms] (mean) Time per request: 229.723 [ms] (mean, across all concurrent requests) Transfer rate: 898.49 [Kbytes/sec] received | |
Connection Times (ms) min mean[+/-sd] median max Connect: 0 1 0.1 1 1 Processing: 376 457 41.1 449 678 Waiting: 375 455 41.0 447 676 Total: 377 458 41.1 450 678 | |
Percentage of the requests served within a certain time (ms) 50% 450 66% 467 75% 485 80% 493 90% 512 95% 529 98% 555 99% 592 100% 678 (longest request) PHP 7.1bash $ sleep 3s && ab -n 100 http://m2.loc2/ This is ApacheBench, Version 2.3 <$Revision: 1826891 $> Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/ Licensed to The Apache Software Foundation, http://www.apache.org/ | |
Benchmarking m2.loc2 (be patient).....done | |
Server Software: nginx/1.15.9 Server Hostname: m2.loc2 Server Port: 80 | |
Document Path: / Document Length: 215496 bytes | |
Concurrency Level: 1 Time taken for tests: 58.168 seconds Complete requests: 100 Failed requests: 0 Total transferred: 21619900 bytes HTML transferred: 21549600 bytes Requests per second: 1.72 [#/sec] (mean) Time per request: 581.683 [ms] (mean) Time per request: 581.683 [ms] (mean, across all concurrent requests) Transfer rate: 362.97 [Kbytes/sec] received | |
Connection Times (ms) min mean[+/-sd] median max Connect: 0 0 0.1 0 1 Processing: 414 581 437.6 519 4774 Waiting: 403 570 437.0 508 4757 Total: 414 581 437.6 519 4774 | |
Percentage of the requests served within a certain time (ms) 50% 519 66% 530 75% 543 80% 553 90% 660 95% 825 98% 1278 99% 4774 100% 4774 (longest request) :php kir.morozov$ sleep 3s && ab -c2 -n 1000 http://m2.loc2/ This is ApacheBench, Version 2.3 <$Revision: 1826891 $> Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/ Licensed to The Apache Software Foundation, http://www.apache.org/ | |
Benchmarking m2.loc2 (be patient) Completed 100 requests Completed 200 requests Completed 300 requests Completed 400 requests Completed 500 requests Completed 600 requests Completed 700 requests Completed 800 requests Completed 900 requests Completed 1000 requests Finished 1000 requests | |
Server Software: nginx/1.15.9 Server Hostname: m2.loc2 Server Port: 80 | |
Document Path: / Document Length: 215496 bytes | |
Concurrency Level: 2 Time taken for tests: 264.837 seconds Complete requests: 1000 Failed requests: 0 Total transferred: 216199000 bytes HTML transferred: 215496000 bytes Requests per second: 3.78 [#/sec] (mean) Time per request: 529.674 [ms] (mean) Time per request: 264.837 [ms] (mean, across all concurrent requests) Transfer rate: 797.21 [Kbytes/sec] received | |
Connection Times (ms) min mean[+/-sd] median max Connect: 0 0 0.1 0 2 Processing: 429 528 36.1 523 810 Waiting: 418 515 35.9 511 798 Total: 429 528 36.1 524 811 | |
Percentage of the requests served within a certain time (ms) 50% 524 66% 535 75% 543 80% 551 90% 567 95% 587 98% 613 99% 655 100% 811 (longest request) ``` |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment