سؤال

لدينا العميل الذي يحاول الاتصال بخدمة شبكة الانترنت مكتوبة في C # من التعليمات البرمجية PHP. استدعاء خدمة ويب يأخذ فترة طويلة كمعلمة.

وهذه الدعوة يعمل بشكل جيد لعملاء آخرين الاتصال من C # أو جافا ولكن هذا العميل هو الحصول على خطأ مرة أخرى من المكالمة. أنا لم تصحيحه دعوتهم محددة ولكن أنا على التخمين بأن عدد صحيح 64BIT هو الحصول على اقتطاع بطريقة أو بأخرى من PHP. يقول العملاء أنهم مجرد إجراء المكالمة خدمة ويب مع سلسلة ولكن هناك مجمع في PHP التي لا اكتب التحويل. يمكن أن يكون هذا فقدان المعلومات العدد؟

وشكرا على اي معلومات.

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

المحلول

وومعظم المنشآت PHP لا تدعم 64 بت الأعداد الصحيحة - 32 هو الحد الأقصى. يمكنك التحقق من ذلك عن طريق قراءة ثابت PHP_INT_SIZE (4 = 32BIT و، 8 = 64bit) عن أو قراءة قيمة PHP_INT_MAX.

<?php

echo PHP_INT_SIZE, "\n", PHP_INT_MAX;

?>

إذا الطبقة خدمة ويب انه يستخدم تحاول اكتب-تحويل تمثيل سلسلة من عدد صحيح 64 بت، ثم نعم، انها معظمهم من المرجح ان يتم اقتطاعها أو تحويلها إلى تعويم. تستطيع أن ترى نوعا من هذا السلوك مع هذا الاختبار البسيط

<?php

echo intval( "12345678901234567890" );
// prints 2147483647, the max value for a 32 bit signed int.

ودون معرفة تفاصيل التنفيذ له، فإنه من الصعب أن يطالب على ما قد يكون حلا جيدا / الحل.

نصائح أخرى

إذا كنت على الاطلاق ويجب أن تتخذ عددا كبيرا من هذا القبيل، وجعله سلسلة، وتحويله إلى وقت طويل في خدمة الويب الخاص بك.

وهذا سوف يزعج المستخدمين الآخرين بك قليلا، ولكن جعلها أكثر ملاءمة لبك الزبائن باستخدام PHP.

وPHP قتل بوحشية دعم عدد صحيح لها، إلى النقطة التي لديك أي وسيلة يمكن التنبؤ بها لمعرفة ذلك تثبيت محددة والتعامل مع الأعداد الصحيحة 32-بت أو 64 بت.

وأسهل طريقة للتعامل مع هذا من شأنه أن يكون لفضح نقطة النهاية الجديدة التي تأخذ سلسلة، ومجرد ألقها في نهاية الخاص بك.

لإشارة على الملحمة PHP وتفشل:

HTTP: //www.mysqlperformanceblog.com/2007/03/27/integers-in-php-running-with-scissors-and-portability/

وكتبت مقالا حول PHP باستخدام nuSoap استدعاء خدمة C # على شبكة الإنترنت ... هل لم تواجه حتى الآن هذه المسألة مع التحويلات كثافة العمليات طويلة، ولكن أنا سوف بالتأكيد تشغيل بعض الاختبارات لمعرفة ما اذا كان يجب إضافته إلى مقالتي . شكرا، شون http://seanmcilvenna.com/blog/7-general/24- نوافذ فب التنمية

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