3v4l.org

run code in 300+ PHP versions simultaneously
<?php /** * Набор методов для запроса к API uCoz. Версия для uCoz PHP сервера * @author Sergey Driver86 Pugovkin <sergey@pugovk.in> – разработчик методов для запроса (php версия) * @author Dmitry Kiselev <api@ucoz.net> – модификация и адаптация под uAPI + images. api.ucoz.net * @version 2.2 от 15 августа 2016 – fixed POST for category */ /** Ссылка на ваш сайт в юкозе, для обращения к uAPI Обратите внимание, что нужно вводить с / на конце. Если у сайта есть прикрепленный домен – необходимо указывать его. Если же сайт доступен по wwww – сайт необходимо указывать вместе с www. Например: http://www.mywebsite.ucoz.ru/ или http://www.mywebsite.com/ */ $myWebsite = 'https://utemplate.pro/'; /** Закончили формировать ссылку */ class Request { /** * Настройки * @var array */ public $config; /** * Обязательные параметры, передаваемые через URL при запросе к API * @var array */ private $params; /** * Конструктор класса * @param array $config Настройки */ function __construct($config = array()) { $this->config = $config; $this->params = array( 'oauth_version' => '1.0', 'oauth_timestamp' => time(), 'oauth_nonce' => md5(microtime() . mt_rand()), 'oauth_signature_method' => 'HMAC-SHA1', 'oauth_consumer_key' => $this->config['oauth_consumer_key'], 'oauth_token' => $this->config['oauth_token'], ); } /** * Создание подписи запроса * @param string $method Метод запроса, например GET * @param string $url URL запроса, например /blog * @param string $params Все параметры, передаваемые через URL при запросе к API * @return string */ private function getSignature($method, $url, $params) { ksort($params); $baseString = strtoupper($method) . '&' . urlencode($url) . '&' . urlencode(strtr(http_build_query($params), array ('+' => '%20'))); return urlencode(base64_encode(hash_hmac('sha1', $baseString, $this->config['oauth_consumer_secret'] . '&' . $this->config['oauth_token_secret'], true))); } /** * Возвращает базовое имя файла для использования в подписи запроса * @param array $match Совпадения при поиске по регулярному выражению preg_replace_callback * @return string */ private function getBaseName($match) { return basename($match[1]); } /** * Запрос к API методом GET * @param string $url URL запроса, например /blog * @param array $data Массив данных * @return array */ public function get($url, $data = array()) { global $myWebsite; $this->params['oauth_nonce'] = md5(microtime() . mt_rand()); $url = $myWebsite.'uapi' . trim(strtolower($url), '').''; $queryString = http_build_query($this->params + $data + array('oauth_signature' => $this->getSignature('GET', $url, $this->params + $data))); $curl = curl_init(); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1); curl_setopt($curl, CURLOPT_URL, $url . '?' . $queryString); $result = curl_exec($curl); curl_close($curl); return $result; } /** * Запрос к API методом POST * @param string $url URL запроса, например /blog * @param array $data Массив данных * @return array */ public function post($url, $data) { global $myWebsite; $this->params['oauth_nonce'] = md5(microtime() . mt_rand()); /** Делаем так, чтобы изображения при отправке отправлялись, а не валились в инвалид сигнутаре */ $x=1; while ($x<50) { if(empty($data['file'.$x])) break; $getfile1others = basename($data['file'.$x]); $findme = '@'; $pos = strpos($getfile1others, $findme); if ($pos === false) { $getfile1shop_array = array( 'file'.$x => '@'.$getfile1others ); } else { $getfile1shop_array = array( 'file'.$x => ''.$getfile1others ); } unset($data['file'.$x]); $data = array_merge($getfile1shop_array, $data); $x++; } if(!empty($data['file_add_cnt'])) { $allcountfilesshop = $data['file_add_cnt']; } if ($url == '/shop/editgoods') { $i= $allcountfilesshop; while ($i<50) { if(empty($data['file_add_'.$i]) && $data['file_add_'.$i] != 'file_add_cnt') break; $getfile1shop = basename($data['file_add_'.$i]); $findme = '@'; $pos = strpos($getfile1shop, $findme); if ($pos === false) { $getfile1shop_array = array( 'file_add_'.$i => '@'.$getfile1shop ); } else { $getfile1shop_array = array( 'file_add_'.$i => ''.$getfile1shop ); } unset($data['file_add_'.$i]); $data = array_merge($getfile1shop_array, $data); $i++; } } $url = $myWebsite.'uapi' . trim(strtolower($url), '').'/'; $sign = array('oauth_signature' => $this->getSignature('POST', $url, $this->params + preg_replace_callback('/^@(.+)$/', array($this, 'getBaseName'), $data))); $queryString = http_build_query($sign); $curl = curl_init(); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1); curl_setopt($curl, CURLOPT_URL, $url . '?' . $forcurlpost); curl_setopt($curl, CURLOPT_POST, true); $forcurlpost = array_merge($this->params + $data, $sign); curl_setopt($curl, CURLOPT_POSTFIELDS, $forcurlpost); $result = curl_exec($curl); curl_close($curl); return $result; } /** * Запрос к API методом PUT * @param string $url URL запроса, например /blog * @param array $data Массив данных * @return array */ public function put($url, $data) { global $myWebsite; $this->params['oauth_nonce'] = md5(microtime() . mt_rand()); /** Делаем так, чтобы изображения при отправке отправлялись, а не валились в инвалид сигнутаре */ $x=1; while ($x<50) { if(empty($data['file'.$x])) break; $getfile1others = basename($data['file'.$x]); $findme = '@'; $pos = strpos($getfile1others, $findme); if ($pos === false) { $getfile1shop_array = array( 'file'.$x => '@'.$getfile1others ); } else { $getfile1shop_array = array( 'file'.$x => ''.$getfile1others ); } unset($data['file'.$x]); $data = array_merge($getfile1shop_array, $data); $x++; } if(!empty($data['file_add_cnt'])) { $allcountfilesshop = $data['file_add_cnt']; } if ($url == '/shop/editgoods') { $i= $allcountfilesshop; while ($i<50) { if(empty($data['file_add_'.$i]) && $data['file_add_'.$i] != 'file_add_cnt') break; $getfile1shop = basename($data['file_add_'.$i]); $findme = '@'; $pos = strpos($getfile1shop, $findme); if ($pos === false) { $getfile1shop_array = array( 'file_add_'.$i => '@'.$getfile1shop ); } else { $getfile1shop_array = array( 'file_add_'.$i => ''.$getfile1shop ); } unset($data['file_add_'.$i]); $data = array_merge($getfile1shop_array, $data); $i++; } } $url = $myWebsite.'uapi' . trim(strtolower($url), '').'/'; $sign = array('oauth_signature' => $this->getSignature('PUT', $url, $this->params + preg_replace_callback('/^@(.+)$/', array($this, 'getBaseName'), $data))); $queryString = http_build_query($sign); $curl = curl_init(); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1); curl_setopt($curl, CURLOPT_URL, $url . '?' . $queryString); curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'PUT'); $forcurlpost = array_merge($this->params + $data, $sign); curl_setopt($curl, CURLOPT_POSTFIELDS, $forcurlpost); $result = curl_exec($curl); curl_close($curl); return $result; } /** * Запрос к API методом DELETE * @param string $url URL запроса, например /blog * @param array $data Массив данных * @return array */ public function delete($url, $data) { global $myWebsite; $this->params['oauth_nonce'] = md5(microtime() . mt_rand()); $url = $myWebsite.'uapi' . trim(strtolower($url), '').'/'; $queryString = http_build_query($this->params + $data + array('oauth_signature' => $this->getSignature('DELETE', $url, $this->params + $data))); $curl = curl_init(); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1); curl_setopt($curl, CURLOPT_URL, $url . '?' . $queryString); curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'DELETE'); $result = json_decode(curl_exec($curl), true); curl_close($curl); return $result; } } // ============================================================== // до сюда нельзя удалять error_reporting(E_ERROR) ; /** * Набор методов для запроса к API uCoz * @author Dmitry Kiselev <api@ucoz.net> – Демонстрация обращения к uAPImodule.php * @version 2.0 от 24 марта 2016 */ $request = new Request(array( 'oauth_consumer_key' => 'edl92g42SHm84bnRbZDW', 'oauth_consumer_secret' => 'wUClCAtSsjvCDs6nDR46zOYItvjKwn', 'oauth_token' => 'A9PL.uc1uujmmzFXmf13Gbeyx2BT1AEiVLiiOkLz', 'oauth_token_secret' => 'CWDmh4QfXOqzIXoEVfpPV9EUoSlEKjNEldItCgiD' )); // Используем // phpinfo(32); $x = '0'; $response = $request->get('/shop/invoices/', array( 'page' => 0, 'id' => '49938,49937,49936,49935,49934,49933,49932,49931,49918,49915,49905,49904,49893,49867,49866,49865,49864,49861,49853,49852,49846,49845,49842,49833,49832,49831,49815,49814,49813,49801,49800,49799,49798,49797,49796,49795,49769,49768,49767,49766,49759,49744,49737,49736,49735,49720,49719,49718,49717,49716,49715,49687,49686,49675,49674,49673,49672,49660,49659,49658,49657,49652,49645,49644,49643,49642,49633,49632,49619,49618,49617,49616,49600,49599,49598,49586,49585,49583,49580,49576,49575,49574,49559,49555,49554,49553,49552,49551,49550,49549,49548,49547,49546,49545,49544,49543,49542,49541,49540,49539,49538,49536,49535,49534,49533' )); $response = json_decode($response, true); //echo '<pre>'; //print_r($response); //echo '</pre>'; while ($x<21) //2090 { $response2 = $request->get('/shop/order/', array( 'order' => $response['success']['orders'][$x]['order_hash'] )); $response2 = json_decode($response2, true); // $response = $request->get('/shop/invoices/', array( // 'page' => $x, // 'id' => '40359,40360,40361,40366,40367,40368,40369,40394,40395,40396,40399,40400,40401,40402,40403,40406,40412,40413,40414,40415,40416,40432,40433,40434,40435,40448,40449,40453,40454,40455,40465,40466,40467,40471,40472,40473,40474,40475,40476,40483,40484,40485,40486,40487,40509,40510,40511,40535,40536,40537,40538,40539,40577,40578,40579,40581,40582,40583,40605,40606,40607,40608,40609,40610,40625,40626,40627,40646,40647,40648,40649,40650,40662,40663,40664,40665,40666,40667,40690,40691,40693,40694,40707,40708,40709,40710,40711,40712,40713,40714,40715,40727,40728,40729,40730,40731,40732,40744,40747,40748,40759,40760,40761,40768,40769,40782,40785,40786,40787,40806,40821,40822,40823,40826,40827,40855,40858,40859,40860,40861,40862,40863,40878,40879,40882,40883,40884,40885,40886,40891,40893,40911,40912,40913,40914,40915,40916,40928,40929,40930,40931,40963,40964,40965,40966,40967,40968,40969,40974,40975,40976' // )); // echo '<pre>'; // print_r(json_decode($response, true)); // echo '</pre>'; // нам нужны profit, id, // echo '<br />'.$response['success']['orders'][$page]['order_hash'].'<br />'; // echo '<pre>'; // print_r(json_decode($response2, true)); // echo '</pre>'; $goods_id = $response2['success']['order_digital_goods']['goods'][0]['id']; $name = $response2['success']['order_goods']['goods'][$goods_id]['added_user']; $price = $response2['success']['order_goods']['goods'][$goods_id]['price']['price_raw']; $num = $response2['success']['order_nom']; $howmusch = '0'; echo ' <table> <tr> <td>'.$num.'</td> <td>'.$name.'</td> <td>'.$price.'</td> </tr> </table> '; $x++; } ?>

Here you find the average performance (time & memory) of each version. A grayed out version indicates it didn't complete successfully (based on exit-code).

VersionSystem time (s)User time (s)Memory (MiB)
7.4.10.0030.01215.23
7.4.00.0070.01115.06
7.3.130.0030.01615.03
7.3.120.0110.00615.10
7.3.110.0060.01015.03
7.3.100.0060.00914.98
7.3.90.0050.01215.06
7.3.80.0050.01114.93
7.3.70.0060.00914.93
7.3.60.0050.00914.91
7.3.50.0040.00914.98
7.3.40.0050.00814.98
7.3.30.0030.01115.01
7.3.20.0060.01016.67
7.3.10.0050.01016.61
7.3.00.0050.00816.74
7.2.260.0080.01115.22
7.2.250.0090.00815.16
7.2.240.0100.00715.17
7.2.230.0080.00815.22
7.2.220.0060.00815.20
7.2.210.0090.00715.22
7.2.200.0030.01015.14
7.2.190.0100.00815.21
7.2.180.0050.01115.14
7.2.170.0100.00515.22
7.2.160.0050.01115.12
7.2.150.0090.00716.97
7.2.140.0090.00617.01
7.2.130.0100.00616.94
7.2.120.0080.00716.95
7.2.110.0090.00816.97
7.2.100.0010.01317.00
7.2.90.0050.01117.03
7.2.80.0100.00616.92
7.2.70.0030.01117.00
7.2.60.0050.01016.86
7.2.50.0040.01016.81
7.2.40.0090.00717.01
7.2.30.0070.00616.91
7.2.20.0080.00716.99
7.2.10.0070.00917.00
7.2.00.0030.01217.51
7.1.330.0080.00715.82
7.1.320.0030.01015.82
7.1.310.0040.01015.86
7.1.300.0090.00515.70
7.1.290.0040.00915.77
7.1.280.0070.00915.80
7.1.270.0020.01315.77
7.1.260.0070.00915.78
7.1.250.0040.01115.82
7.1.240.0050.01115.87
7.1.230.0070.00915.78
7.1.220.0060.00815.80
7.1.210.0100.00315.79
7.1.200.0020.01015.76
7.1.190.0030.00815.81
7.1.180.0080.00615.88
7.1.170.0060.00915.63
7.1.160.0070.00815.78
7.1.150.0040.01115.91
7.1.140.0040.01015.48
7.1.130.0050.00915.88
7.1.120.0070.00415.89
7.1.110.0070.00715.72
7.1.100.0080.00816.56
7.1.90.0030.00916.00
7.1.80.0060.00715.86
7.1.70.0060.00716.33
7.1.60.0120.00822.25
7.1.50.0070.01222.16
7.1.40.0110.01122.00
7.1.30.0100.00822.05
7.1.20.0140.00622.04
7.1.10.0090.00816.08
7.1.00.0080.00815.96
7.0.330.0060.00815.49
7.0.320.0050.00915.52
7.0.310.0060.01115.34
7.0.300.0040.00615.59
7.0.290.0070.00815.33
7.0.280.0050.01015.46
7.0.270.0040.01115.45
7.0.260.0050.00715.40
7.0.250.0020.01015.32
7.0.240.0030.00815.35
7.0.230.0090.00715.55
7.0.220.0090.00415.44
7.0.210.0050.00915.27
7.0.200.0030.01016.04
7.0.190.0050.00715.78
7.0.180.0080.00515.74
7.0.170.0070.00715.69
7.0.160.0050.01215.73
7.0.150.0030.01015.74
7.0.140.0060.00715.75
7.0.130.0060.01115.82
7.0.120.0060.00815.87
7.0.110.0060.00715.59
7.0.100.0010.01115.77
7.0.90.0040.01015.87
7.0.80.0040.00915.77
7.0.70.0060.00815.71
7.0.60.0020.01215.58
7.0.50.0070.00715.83
7.0.40.0090.00614.47
7.0.30.0070.00714.49
7.0.20.0070.00714.32
7.0.10.0050.00814.42
7.0.00.0040.01014.35
5.6.400.0030.01114.56
5.6.390.0040.00914.73
5.6.380.0060.00614.64
5.6.370.0060.00914.65
5.6.360.0100.00314.62
5.6.350.0070.00414.65
5.6.340.0060.01114.68
5.6.330.0050.00914.44
5.6.320.0050.00614.49
5.6.310.0090.00714.51
5.6.300.0030.01214.66
5.6.290.0050.00814.55
5.6.280.0060.01214.81
5.6.270.0090.00614.68
5.6.260.0050.00814.47
5.6.250.0090.00614.53
5.6.240.0040.00914.68
5.6.230.0100.00514.49
5.6.220.0050.00914.46
5.6.210.0050.01014.51
5.6.200.0100.00614.63
5.6.190.0050.00514.47
5.6.180.0050.01014.69
5.6.170.0060.00914.53
5.6.160.0050.00714.48
5.6.150.0090.00414.78
5.6.140.0060.00514.76
5.6.130.0060.00814.62
5.6.120.0060.00814.69
5.6.110.0050.00714.69
5.6.100.0020.01114.56
5.6.90.0050.00714.71
5.6.80.0070.00514.66
5.6.70.0090.00314.50
5.6.60.0050.01014.55
5.6.50.0070.00614.42
5.6.40.0070.00714.29
5.6.30.0060.00814.55
5.6.20.0050.00714.51
5.6.10.0030.00714.53
5.6.00.0000.01214.53

preferences:
35.74 ms | 400 KiB | 5 Q