मैं php-fpm और cron कार्यों के साथ php binary (/ usr/bin/php) के साथ nginx के पीछे php चला रहा हूं।PHP7 क्ली बनाम php-fpm
मुझे एक असंगतता मिली है - जब मैं इसे php बाइनरी और fpm के माध्यम से चलाता हूं तो वही स्क्रिप्ट आउटपुट अलग-अलग परिणाम देता है।
नोट यह केवल PHP7 पर लागू होता है। किसी अन्य सर्वर पर मैंने 5.6 के साथ इसका परीक्षण किया है और नतीजा समान है।
यहां मुझे जो मिला है वह यहां है। निम्नलिखित स्क्रिप्ट:
<?php
class Test {
public function test(){
$arr = (object) [
'children' => []
];
$arr->children[] = 1;
return $arr;
}
}
$o = new Test();
$o->test();
print_r($o->test());
test.php
पर सहेजा गया। जब मैंने इसे ब्राउज़र (php-एफ पी एम) के माध्यम से चलाने के लिए, होगा उत्पादन:
stdClass Object
(
[children] => Array
(
[0] => 1
)
)
लेकिन जब मैं CLI से निष्पादित, परिणाम अलग है: (वस्तु के बिना
[[email protected] web]# php -f test.php
stdClass Object
(
[children] => Array
(
[0] => 1
[1] => 1
)
)
यह नहीं होता है) कास्टिंग। अगर मैं $arr
को new stdClass()
के साथ तत्काल कर दूंगा तो ऐसा नहीं होगा।
ऐसा लगता है कि $arr = (object)
को php7 के इंजन द्वारा स्मृति में संरक्षित किया जा रहा है।
शायद यह एक कॉन्फ़िगरेशन समस्या है। कोई भी इससे पहले या समझा सकता है?
धन्यवाद।
कुछ कैशिंग समस्याओं से ठीक पहले PHP7 जारी किया गया था, शायद उनमें से एक से संबंधित थे। कुछ गति अनुकूलन – exussum
के कारण था और 'php' अंक'/usr/bin/php' करने के लिए सही है, है ना? –
यह एक बग की तरह दिखता है, मैं इसे http://bugs.php.net – Andrea