سؤال

وإذا نظرنا إلى قراءة حجم ملف SOAP وظيفة، أي أفضل الممارسات؟

$data = fopen('php://input','rb');
$content = fread($data,5000);

$dom = new DOMDocument();
$dom->loadXML($content);

ونود 5000 لتكون دينامية كما في كل حجم SOAP وظيفة ستكون مختلفة أو يفعل هذا الأمر؟

ووباستخدام fread () تكون كبيرة

هل كانت مفيدة؟

المحلول

وأم. إذا كنت تستطيع قراءة مع "fread '، أنا لا أرى أي سبب لا يمكنك قراءة النص نفسه بالضبط مع" file_get_contents(). أنا استخدم هذا عدة مرات وتذكر أن لدي محاولة كليهما.

وبقدر ما يتعلق الأمر أفضل الممارسات ل"fread" يذهب، فما عليك إلا أن حجم الملف الذي يمكنك الحصول عليه من getallheaders ().

وهكذا، إذا كنت لا تزال تفضل استخدام 'fread "هنا هو رمز.

$data = fopen('php://input','rb');
$Headers = getallheaders();
$CLength  = $Headers['Content-Length'];
$content = fread($data,$CLength);

$dom = new DOMDocument();
$dom->loadXML($content);

ورمز أعلاه هو أوضح النفس لذلك ليس هناك حاجة لمزيد من التوضيح. مجرد ملاحظة قليلا قليلا أنه إذا كان طول أطول من 8192 بايت سيتم قص المحتوى. لذلك كنت أفضل تحقق طول القراءة لمعرفة ما اذا كان يثقب. (لن تحتاج إلى أن تقلق إذا كنت تستخدم "file_get_contents()" على الرغم من).

ويساعد هذا الأمل

نصائح أخرى

هل يمكن أن حاول القيام بما يلي بدلا من ذلك:

$xml = file_get_contents('php://input')

وهذا سوف تحصل على كل محتويات، بغض النظر عن طول البيانات.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top