-
list
-
lskdj fkjdf
-
a;skdjlasdjkf
echo "abc";
-
kjshdkfjh djf
-
kjh kjhk
| <?php | |
| $a = []; | |
| //$s = 123456; | |
| $s = 's6tbdfgj222dJGk'; | |
| $rs = str_repeat("0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ", 10); | |
| $numGen = function() { | |
| return rand(1, 9999999); | |
| }; |
| <?php | |
| $strs = []; | |
| $s = str_repeat("0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ", 10); | |
| $n = 100000; | |
| for ($i = 0; $i < $n; $i++) { | |
| $strs[$i] = substr(str_shuffle($s), 0, mt_rand(10, 100)); | |
| } |
Igor Wiedler написал простенькую функцию retry, которая повторяет выполнение коллбека до получения успешного результата или достижения заданного количества неудач. При этом он использовал goto для реализации цикла. Когда его спросили, а почему goto, а не, скажем, рекурсия, он неожиданно очень подробно и интересно ответил. Ниже приводится перевод его ответа.
Конечно же, я рассматривал альтернативы goto. Я очень подробно их изучил, и рад представить вам результаты.
Когда парсер PHP читает исходник, код компилируется в последовательность опкодов, которая затем будет выполнена движком Zend (tm) (r). Компилятор выполняет кое-какие оптимизации, но вообще он довольно тупой. Поэтому, в зависимости от написанного вами кода он будет генерировать разные опкоды. Это напрямую влияет на производительность.
Существует несколько способов написать цикл. Начнём с упомянутого вами — рекурсии.
function retry($retries, callable $fn)List of JSON RPC client libraries in PHP available on GitHub.
https://github.com/fguillot/JsonRPC
- no transport injection (curl)
- no json options (json_encode, json_decode)
- no read timeout (no interface)
- returns raw result from
resultkey andnullon error - id = mt_rand() (no way to set custom)
| <?php | |
| // Test for one case: exploding string by space to two parts | |
| function rand_str() { | |
| return substr(str_shuffle("0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"), 0, rand(10, 20)); | |
| } | |
| $strs = []; | |
| for ($i = 0; $i < 100000; $i++) { |
| <?php | |
| // Source: https://github.com/yiisoft/yii2/blob/a2c483fc19a0d46dcefd5e97293cde55ee552ecf/framework/console/Markdown.php | |
| /** | |
| * @link http://www.yiiframework.com/ | |
| * @copyright Copyright (c) 2008 Yii Software LLC | |
| * @license http://www.yiiframework.com/license/ | |
| */ | |
| namespace yii\console; |
| .controller-wiki div.wiki { | |
| font-family: Helvetica, Arial; | |
| font-size: 14px; | |
| line-height: 1.6; | |
| background-color: #fff; | |
| color: #333; | |
| -webkit-font-smoothing: antialiased; | |
| } | |
| .controller-wiki div.wiki p { | |
| margin: 1.2em 0; |
I hereby claim:
- I am ksimka on github.
- I am ksimka (https://keybase.io/ksimka) on keybase.
- I have a public key whose fingerprint is F6C3 5BF2 286F 1ED2 1650 C26F 39AC 04FC 4141 D525
To claim this, I am signing this object: