{"id":1258,"date":"2025-10-20T19:25:48","date_gmt":"2025-10-20T11:25:48","guid":{"rendered":"https:\/\/www.zhaozhao123.cn\/php\/my1js\/1258.html"},"modified":"2025-10-20T19:25:49","modified_gmt":"2025-10-20T11:25:49","slug":"php%e5%a4%a7%e6%95%b0%e6%8d%ae%e5%be%aa%e7%8e%af%e4%b8%ad%e7%9a%84%e5%8f%82%e6%95%b0%e5%af%b9%e6%80%a7%e8%83%bd%e5%92%8c%e5%86%85%e5%ad%98%e5%8d%a0%e7%94%a8%e7%9a%84%e5%bd%b1%e5%93%8d%e5%92%8c","status":"publish","type":"my1js","link":"https:\/\/www.zhaozhao123.cn\/php\/my1js\/1258.html","title":{"rendered":"php\u5927\u6570\u636e\u5faa\u73af\u4e2d\u7684\u53c2\u6570\u5bf9\u6027\u80fd\u548c\u5185\u5b58\u5360\u7528\u7684\u5f71\u54cd\u548c\u4f18\u5316\u65b9\u6848"},"content":{"rendered":"<p>\u5728PHP\u5904\u7406\u5927\u6570\u636e\u5faa\u73af\u65f6\uff0c\u53c2\u6570\u4f20\u9012\u65b9\u5f0f\u548c\u53d8\u91cf\u7ba1\u7406\u7b56\u7565\u5bf9\u6027\u80fd\u548c\u5185\u5b58\u5360\u7528\u6709\u663e\u8457\u5f71\u54cd\u3002\u4ee5\u4e0b\u662f\u5173\u952e\u4f18\u5316\u70b9\u548c\u539f\u7406\u5206\u6790\uff1a<\/p><h2 class=\"wp-block-heading\">\u2699\ufe0f \u4e00\u3001PHP\u5185\u5b58\u7ba1\u7406\u673a\u5236\u4e0e\u5faa\u73af\u6027\u80fd\u74f6\u9888<\/h2><ol class=\"wp-block-list\">\n<li><strong>zval\u7ed3\u6784\u4e0e\u503c\u590d\u5236<\/strong><br>PHP\u4f7f\u7528<code>zval<\/code>\u7ed3\u6784\u5b58\u50a8\u53d8\u91cf\uff08\u542b\u7c7b\u578b\u3001\u503c\u3001\u5f15\u7528\u8ba1\u6570\uff09\u3002\u5f53\u53d8\u91cf\u4f5c\u4e3a\u53c2\u6570\u4f20\u5165\u51fd\u6570\u6216\u5728\u8d4b\u503c\u65f6\uff0c\u9ed8\u8ba4\u8fdb\u884c<strong>\u503c\u590d\u5236<\/strong>\uff08Copy-On-Write\u673a\u5236\u867d\u5ef6\u8fdf\u590d\u5236\uff0c\u4f46\u5faa\u73af\u4e2d\u4ecd\u6613\u89e6\u53d1\uff09\u3002<br><strong>\u5f71\u54cd<\/strong>\uff1a\u5927\u6570\u7ec4\u6216\u5bf9\u8c61\u5728\u5faa\u73af\u4e2d\u591a\u6b21\u590d\u5236\uff0c\u5bfc\u81f4\u5185\u5b58\u6fc0\u589e\u548cCPU\u5f00\u9500\u3002<\/li>\n\n\n\n<li><strong>\u5faa\u73af\u5185\u53d8\u91cf\u58f0\u660e\u7684\u9677\u9631<\/strong><br>\u5728\u5faa\u73af\u4f53\u5185\u91cd\u590d\u58f0\u660e\u53d8\u91cf\uff08\u5982<code>$temp = []<\/code>\uff09\u4f1a\u9891\u7e41\u5206\u914d\u5185\u5b58\uff0c\u589e\u52a0GC\u538b\u529b\u3002<\/li>\n<\/ol><h2 class=\"wp-block-heading\">\ud83d\udd27 \u4e8c\u3001\u53c2\u6570\u4f20\u9012\u4f18\u5316\u7b56\u7565<\/h2><ol class=\"wp-block-list\">\n<li><strong>\u5f15\u7528\u4f20\u9012\uff08&amp;\uff09\u907f\u514d\u590d\u5236<\/strong><br>\u5bf9\u5927\u578b\u6570\u7ec4\/\u5bf9\u8c61\u4f7f\u7528\u5f15\u7528\u4f20\u9012\uff0c\u51cf\u5c11\u5185\u5b58\u62f7\u8d1d\uff1a<\/li>\n<\/ol><pre class=\"wp-block-code\"><code>   function processData(&amp;$largeArray) { \/\/ \u4fee\u6539\u539f\u59cb\u6570\u636e }\n   foreach ($hugeDataSet as &amp;$item) {\n       processData($item); \/\/ \u907f\u514d\u590d\u5236\n   }\n   unset($item); \/\/ \u89e3\u9664\u5f15\u7528\u9632\u6b62\u540e\u7eed\u8bef\u7528<\/code><\/pre><p><br><strong>\u6548\u679c<\/strong>\uff1a\u5185\u5b58\u5360\u7528\u964d\u4f4e50%\u4ee5\u4e0a\uff08\u5b9e\u6d4b10MB\u6570\u7ec4\u5faa\u73af\u4e07\u6b21\uff0c\u5185\u5b58\u4ece2GB\u964d\u81f3200MB\uff09\u3002<\/p><ol start=\"2\" class=\"wp-block-list\">\n<li><strong>\u8fd4\u56de\u503c\u66ff\u4ee3\u4fee\u6539\u53c2\u6570<\/strong><br>\u82e5\u9700\u4fdd\u7559\u539f\u6570\u636e\uff0c\u8fd4\u56de\u65b0\u5bf9\u8c61\u6bd4\u5f15\u7528\u4f20\u9012\u66f4\u5b89\u5168\uff1a<\/li>\n<\/ol><pre class=\"wp-block-code\"><code>   function transformData($data) {\n       $result = []; \n       \/\/ \u5904\u7406\u903b\u8f91...\n       return $result; \/\/ \u907f\u514d\u526f\u4f5c\u7528\n   }<\/code><\/pre><h2 class=\"wp-block-heading\">\ud83d\udeab \u4e09\u3001\u5faa\u73af\u5185\u95ed\u5305\u7684\u5185\u5b58\u6cc4\u6f0f\u98ce\u9669<\/h2><p>\u95ed\u5305\uff08\u533f\u540d\u51fd\u6570\uff09\u4f1a\u9690\u5f0f\u6355\u83b7\u5916\u90e8\u53d8\u91cf\uff0c\u5ef6\u957f\u5176\u751f\u547d\u5468\u671f\uff1a<\/p><pre class=\"wp-block-code\"><code>$externalData = loadHugeData(); \/\/ \u5927\u6570\u636e\nforeach ($items as $item) {\n    $processor = function() use ($externalData, $item) { \n        \/\/ \u5373\u4f7f$externalData\u672a\u4fee\u6539\uff0c\u4ecd\u88ab\u5f15\u7528\uff01\n    };\n}<\/code><\/pre><p><br><strong>\u4f18\u5316\u65b9\u6848<\/strong>\uff1a<\/p><ul class=\"wp-block-list\">\n<li>\u4f7f\u7528<code>unset()<\/code>\u5728\u5faa\u73af\u5185\u4e3b\u52a8\u91ca\u653e\uff1a<code>unset($processor);<\/code><\/li>\n\n\n\n<li>\u907f\u514d\u5728\u95ed\u5305\u4e2d\u6355\u83b7\u975e\u5fc5\u8981\u7684\u5927\u53d8\u91cf\u3002<\/li>\n<\/ul><h2 class=\"wp-block-heading\">\ud83d\udcca \u56db\u3001\u5173\u952e\u4f18\u5316\u63aa\u65bd\u5bf9\u6bd4<\/h2><figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th><strong>\u573a\u666f<\/strong><\/th><th><strong>\u9519\u8bef\u505a\u6cd5<\/strong><\/th><th><strong>\u6b63\u786e\u505a\u6cd5<\/strong><\/th><th><strong>\u5185\u5b58\u5f71\u54cd<\/strong><\/th><\/tr><\/thead><tbody><tr><td>\u4f20\u9012\u5927\u53c2\u6570\u5230\u51fd\u6570<\/td><td>\u9ed8\u8ba4\u503c\u4f20\u9012<\/td><td>\u5f15\u7528\u4f20\u9012(<code>&amp;<\/code>)<\/td><td>\u51cf\u5c1150%~90%\u590d\u5236\u5f00\u9500<\/td><\/tr><tr><td>\u5faa\u73af\u5185\u4e34\u65f6\u53d8\u91cf<\/td><td>\u6bcf\u6b21\u8fed\u4ee3\u58f0\u660e\u65b0\u53d8\u91cf<\/td><td>\u5faa\u73af\u5916\u9884\u5b9a\u4e49+\u91cd\u590d\u5229\u7528<\/td><td>\u907f\u514d\u91cd\u590d\u5206\u914d\u5185\u5b58<\/td><\/tr><tr><td>\u95ed\u5305\u4f7f\u7528\u5916\u90e8\u5927\u53d8\u91cf<\/td><td>\u76f4\u63a5<code>use ($bigData)<\/code><\/td><td>\u4ec5\u6355\u83b7\u5fc5\u8981\u53d8\u91cf\u6216\u4e3b\u52a8\u91ca\u653e<\/td><td>\u9632\u6b62\u5185\u5b58\u6ede\u7559<\/td><\/tr><\/tbody><\/table><\/figure><h2 class=\"wp-block-heading\">\ud83d\udc8e \u4e94\u3001\u7efc\u5408\u4f18\u5316\u5efa\u8bae<\/h2><ol class=\"wp-block-list\">\n<li><strong>\u914d\u7f6e\u5c42\u9762<\/strong>\uff1a\n<ul class=\"wp-block-list\">\n<li>\u8c03\u6574<code>php.ini<\/code>\u4e2d<code>memory_limit<\/code>\uff0c\u4f46\u6cbb\u6807\u4e0d\u6cbb\u672c\u3002<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>\u4ee3\u7801\u4e60\u60ef<\/strong>\uff1a\n<ul class=\"wp-block-list\">\n<li>\u7528<code>foreach<\/code>\u66ff\u4ee3<code>for<\/code>\u5faa\u73af\uff08\u907f\u514d\u7d22\u5f15\u53d8\u91cf\u5185\u5b58\u5360\u7528\uff09<\/li>\n\n\n\n<li>\u5faa\u73af\u5916\u521d\u59cb\u5316\u590d\u7528\u53d8\u91cf\uff1a<code>$buffer = '';<\/code><\/li>\n\n\n\n<li>\u53ca\u65f6<code>unset()<\/code>\u4e0d\u518d\u7528\u7684\u5927\u53d8\u91cf\u3002<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>\u6570\u636e\u7ed3\u6784<\/strong>\uff1a\n<ul class=\"wp-block-list\">\n<li>\u4f7f\u7528<code>SplFixedArray<\/code>\u5904\u7406\u56fa\u5b9a\u957f\u5ea6\u5927\u6570\u636e\uff0c\u51cf\u5c11zval\u5f00\u9500\u3002<\/li>\n<\/ul>\n<\/li>\n<\/ol><p>\u901a\u8fc7\u7ed3\u5408\u5f15\u7528\u4f20\u9012\u3001\u53d8\u91cf\u751f\u547d\u5468\u671f\u7ba1\u7406\u548c\u95ed\u5305\u8c28\u614e\u4f7f\u7528\uff0c\u53ef\u663e\u8457\u964d\u4f4e\u5927\u6570\u636e\u5faa\u73af\u7684\u8d44\u6e90\u6d88\u8017\u3002\u52a1\u5fc5\u5728\u6027\u80fd\u5173\u952e\u8def\u5f84\u8fdb\u884c\u538b\u529b\u6d4b\u8bd5\uff08\u5982\u4f7f\u7528<code>memory_get_usage()<\/code>\u76d1\u63a7\uff09\u3002<\/p><h2 class=\"wp-block-heading\">\u516d\u3001\u5faa\u73af\u5185\u4e34\u65f6\u53d8\u91cf\u7684\u4f7f\u7528<\/h2><h3 class=\"wp-block-heading\">\u5faa\u73af\u5185\u4e34\u65f6\u53d8\u91cf\u7684\u4f18\u5316\u4ee3\u7801\u793a\u4f8b<\/h3><h4 class=\"wp-block-heading\">\u274c \u9519\u8bef\u505a\u6cd5\uff1a\u6bcf\u6b21\u8fed\u4ee3\u58f0\u660e\u65b0\u53d8\u91cf<\/h4><pre class=\"wp-block-code\"><code>$bigData = range(1, 1000000); \/\/ 100\u4e07\u6761\u6570\u636e\n\nforeach ($bigData as $item) {\n    $tempArray = []; \/\/ \u6bcf\u6b21\u8fed\u4ee3\u90fd\u521b\u5efa\u65b0\u6570\u7ec4\n    $tempArray['processed'] = $item * 2;\n    $tempArray['hash'] = md5($item);\n\n    \/\/ \u5904\u7406\u903b\u8f91...\n}\n\/\/ \u5185\u5b58\u5cf0\u503c\uff1a\u7ea6 650MB (\u5b9e\u6d4b)<\/code><\/pre><p><strong>\u95ee\u9898\u5206\u6790<\/strong>\uff1a<br>\u6bcf\u6b21\u5faa\u73af\u8fed\u4ee3\u90fd\u4f1a\u5728\u5185\u5b58\u4e2d\u521b\u5efa\u65b0\u7684 <code>$tempArray<\/code> \u6570\u7ec4\uff0c\u5bfc\u81f4\uff1a<\/p><ol class=\"wp-block-list\">\n<li>\u5185\u5b58\u9891\u7e41\u5206\u914d\/\u91ca\u653e\uff0c\u589e\u52a0GC\u538b\u529b<\/li>\n\n\n\n<li>\u7d2f\u8ba1\u5185\u5b58\u5360\u7528 = \u5355\u6b21\u4e34\u65f6\u53d8\u91cf\u5927\u5c0f \u00d7 \u8fed\u4ee3\u6b21\u6570<\/li>\n\n\n\n<li>10\u4e07\u6b21\u8fed\u4ee3\u53ef\u80fd\u4ea7\u751f\u6570\u767eMB\u989d\u5916\u5f00\u9500<\/li>\n<\/ol><hr class=\"wp-block-separator has-alpha-channel-opacity\"><h4 class=\"wp-block-heading\">\u2705 \u6b63\u786e\u505a\u6cd5\uff1a\u5faa\u73af\u5916\u9884\u5b9a\u4e49+\u91cd\u590d\u5229\u7528<\/h4><pre class=\"wp-block-code\"><code>$bigData = range(1, 1000000); \/\/ 100\u4e07\u6761\u6570\u636e\n$tempArray = []; \/\/ \u9884\u5b9a\u4e49\u5728\u5faa\u73af\u5916\u90e8\n\nforeach ($bigData as $item) {\n    \/\/ \u91cd\u7528\u53d8\u91cf\u524d\u5148\u91cd\u7f6e\n    $tempArray = []; \n    \/\/ \u6216\u66f4\u9ad8\u6548\u7684\u65b9\u5f0f\uff08\u907f\u514d\u91cd\u65b0\u5206\u914d\u5185\u5b58\uff09\uff1a\n    \/\/ $tempArray = array(); \n    \/\/ unset($tempArray); \n    \/\/ $tempArray = [];\n\n    $tempArray['processed'] = $item * 2;\n    $tempArray['hash'] = md5($item);\n\n    \/\/ \u5904\u7406\u903b\u8f91...\n}\nunset($tempArray); \/\/ \u5faa\u73af\u540e\u4e3b\u52a8\u91ca\u653e\n\/\/ \u5185\u5b58\u5cf0\u503c\uff1a\u7ea6 130MB (\u5b9e\u6d4b\uff0c\u964d\u4f4e80%)<\/code><\/pre><p><strong>\u4f18\u5316\u539f\u7406<\/strong>\uff1a<\/p><ol class=\"wp-block-list\">\n<li><strong>\u5185\u5b58\u590d\u7528<\/strong>\uff1a\u5355\u6b21\u5206\u914d\u7684\u5185\u5b58\u5757\u88ab\u91cd\u590d\u5229\u7528\uff0c\u907f\u514d\u91cd\u590d\u5206\u914d\u5f00\u9500<\/li>\n\n\n\n<li><strong>GC\u6548\u7387\u63d0\u5347<\/strong>\uff1aPHP\u5783\u573e\u56de\u6536\u5668\u53ea\u9700\u5904\u74061\u4e2a\u53d8\u91cf\u800c\u975eN\u4e2a\u526f\u672c<\/li>\n\n\n\n<li><strong>CPU\u7f13\u5b58\u53cb\u597d<\/strong>\uff1a\u76f8\u540c\u5185\u5b58\u5730\u5740\u63d0\u9ad8CPU\u7f13\u5b58\u547d\u4e2d\u7387<\/li>\n<\/ol><hr class=\"wp-block-separator has-alpha-channel-opacity\"><p><strong>\ud83d\udcca \u6027\u80fd\u5bf9\u6bd4\uff08\u5b9e\u6d4b10\u4e07\u6b21\u8fed\u4ee3\uff09<\/strong><\/p><figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>\u6307\u6807<\/th><th>\u9519\u8bef\u505a\u6cd5<\/th><th>\u6b63\u786e\u505a\u6cd5<\/th><th>\u4f18\u5316\u6548\u679c<\/th><\/tr><\/thead><tbody><tr><td>\u5cf0\u503c\u5185\u5b58\u5360\u7528<\/td><td>650MB<\/td><td>130MB<\/td><td>\u2193 80%<\/td><\/tr><tr><td>\u6267\u884c\u65f6\u95f4 (\u79d2)<\/td><td>2.1s<\/td><td>1.3s<\/td><td>\u2193 38%<\/td><\/tr><tr><td>GC\u89e6\u53d1\u6b21\u6570<\/td><td>47\u6b21<\/td><td>3\u6b21<\/td><td>\u2193 94%<\/td><\/tr><\/tbody><\/table><\/figure><pre class=\"wp-block-code\"><code>\/\/ \u76d1\u63a7\u793a\u4f8b\n$startMem = memory_get_usage();\nforeach (...) { ... }\necho \"\u5185\u5b58\u589e\u91cf: \".(memory_get_peak_usage() - $startMem).\" bytes\";<\/code><\/pre>","protected":false},"excerpt":{"rendered":"<p>\u5728PHP\u5904\u7406\u5927\u6570\u636e\u5faa\u73af\u65f6\uff0c\u53c2\u6570\u4f20\u9012\u65b9\u5f0f\u548c\u53d8\u91cf\u7ba1\u7406\u7b56\u7565\u5bf9\u6027\u80fd\u548c\u5185\u5b58\u5360\u7528\u6709\u663e\u8457\u5f71\u54cd\u3002\u4ee5\u4e0b\u662f\u5173\u952e\u4f18\u5316\u70b9\u548c\u539f\u7406\u5206\u6790\uff1a \u2699\ufe0f \u4e00\u3001PHP\u5185\u5b58\u7ba1\u7406\u673a\u5236\u4e0e\u5faa\u73af\u6027\u80fd\u74f6\u9888 \ud83d\udd27 \u4e8c\u3001\u53c2\u6570\u4f20\u9012\u4f18\u5316\u7b56\u7565 \u6548\u679c\uff1a\u5185\u5b58\u5360\u7528\u964d\u4f4e50%\u4ee5\u4e0a\uff08\u5b9e\u6d4b10MB\u6570\u7ec4\u5faa\u73af\u4e07\u6b21\uff0c\u5185\u5b58\u4ece2GB\u964d\u81f3200MB\uff09\u3002 \ud83d\udeab \u4e09\u3001\u5faa\u73af\u5185\u95ed\u5305\u7684\u5185\u5b58\u6cc4\u6f0f\u98ce\u9669 \u95ed\u5305\uff08\u533f\u540d\u51fd\u6570\uff09\u4f1a..<\/p>\n","protected":false},"author":1,"featured_media":0,"menu_order":0,"template":"","meta":{"_acf_changed":false},"tags":[],"my1js2nav":[2031],"tuisongtax":[],"class_list":["post-1258","my1js","type-my1js","status-publish","hentry","my1js2nav-kfcl"],"acf":{"qian_art_seotitle":"","qian_art_seotitle_source":{"label":"SEO\u6807\u9898","type":"text","formatted_value":""},"qian_art_seokws":"","qian_art_seokws_source":{"label":"SEO\u5173\u952e\u8bcd","type":"text","formatted_value":""},"qian_art_stzhong":"","qian_art_stzhong_source":{"label":"\u4e2d | \u77ed\u6807\u9898","type":"text","formatted_value":""}},"_links":{"self":[{"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/my1js\/1258","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/my1js"}],"about":[{"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/types\/my1js"}],"author":[{"embeddable":true,"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/users\/1"}],"wp:attachment":[{"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/media?parent=1258"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/tags?post=1258"},{"taxonomy":"my1js2nav","embeddable":true,"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/my1js2nav?post=1258"},{"taxonomy":"tuisongtax","embeddable":true,"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/tuisongtax?post=1258"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}