امتیاز موضوع:
  • 1 رأی - میانگین امتیازات: 5
  • 1
  • 2
  • 3
  • 4
  • 5
curl - خطای 504 Gateway Timeout
نویسنده پیام
crafcrab آفلاین
كاربر دو ستاره
**

ارسال‌ها: 216
موضوع‌ها: 79
تاریخ عضویت: مرداد ۱۳۸۹

تشکرها : 42
( 33 تشکر در 31 ارسال )
ارسال: #1
Question  curl - خطای 504 Gateway Timeout
سلام دوستان
من در php با curl به یک api وصل میشم و یکسری پارامتر براش POST میکنم در قالب xml و یکسری داده از اون میگیرم در جواب به صورت xml تا اینجا مشکلی نیست
مشکل زمانی هست که سروری که api روش هست بعضی وقت ها خطای 504 میده (حتی با POST MAN)
و من نمیتونم این خطا رو مدیریت کنم
در اصل کد های من بعد از اجرای دستور :


کد php:
$output=curl_exec($ch); 

دیگه کار نمیکنه و مستقیم در صفحه مرورگر برای کاربر مینویسه 504 Gateway Timeout
چطوری باید این خطا رو handling کنم و پیام خطای خودم روبه کاربر نمایش بدم!!!
تنضیمات php ini من:




کد:
max_input_time=60max_execution_time=60upload_max_filesize=1000000Mpost_max_size=259200Mmemory_limit=1024M


اینم کد من:


کد php:
<?php

error_reporting
(E_ALL);
set('display_errors','off');
ini_set("log_errors",1  );
set_time_limit(0);
ignore_user_abort(true);
class 
myclass{
 
   $api_url='http://abc.ir:8080/mypage';
 
   public $content_type='application/xml';
 
   public $accept='application/xml';
 
   public $authorization='dgdfgdfgdgvdfgdgf';
 
   public $curl_timeout=60;
 
   public $curl_debug_file='log.txt';
    function 
get_data($xml_content   {
 
       try{
 
           if(filter_var($this->api_url,FILTER_VALIDATE_URL)){
 
               $ch=curl_init($this->api_url);
                curl_setopt($ch,CURLOPT_HTTPHEADER,array(
                        'Content-Type: '.$this->content_type,
                        'Accept: '.$this->accept,
                        'Authorization: '.$this->authorization)
                        );
 
               curl_setopt($ch,CURLOPT_POST,1);
 
               curl_setopt($ch,CURLOPT_POSTFIELDS,"$xml_content" ;
 
               curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
 
               curl_setopt($ch,CURLOPT_TIMEOUT,$this->curl_timeout);
 
               curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,0);
 
               curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,0);
                
// error reporting
 
               curl_setopt($ch,CURLOPT_VERBOSE,true);
 
               $verbose=fopen($this->curl_debug_file,'a');
 
               curl_setopt($ch,CURLOPT_STDERR,$verbose);
                
// execute request
 
               $output=curl_exec($ch);
                
// debug result
 
               $response=curl_getinfo($ch,CURLINFO_HTTP_CODE);
                
//check if 504 return
                // close connections
 
               curl_close($ch);
                if(
$response=='200'){
 
                   // get response from api
 
                   $output=new SimpleXMLElement($output);
 
                   return array(true,$output);
                }else{
                    return array(
false,'1003');
                }
            }else{
                return array(
false,'1002');
            }
        }catch(
Exception $e){
            return array(
false,'1001');
        }
    }

?>



وقتی api به من 504 بده بعد از اجرای خطی که کد :


کد php:
$output=curl_exec($ch); 

داخلش هست و کد های بعد آن اجرا نمیشود در مرورگر کاربر در یک صفحه سفید مینویسه Gateway Timeout



نکته : اگر سروری که api میده درست باشه من کدم کار میکنه بعضی مواقع فقط api به من 504 میده
(آخرین ویرایش در این ارسال: ۲۵-مهر-۱۳۹۶, ۱۶:۳۸:۱۹، توسط babyy.)
۲۵-مهر-۱۳۹۶, ۱۱:۰۶:۵۱
ارسال‌ها
پاسخ
babyy آفلاین
بازنشسته
*****

ارسال‌ها: 3,095
موضوع‌ها: 141
تاریخ عضویت: مرداد ۱۳۸۷

تشکرها : 35081
( 26090 تشکر در 9068 ارسال )
ارسال: #2
RE: curl - خطای 504 Gateway Timeout
سلام

یه نگاهی انداختم ولی نمیتونم تضخیص بدم از چی هست! از جایی هم که میگی یه جا درست کار میکنه یجا نادرست؛ واسه همین نمیتونم دقیقا نظر بدم از چی هست

ولی از
کد:
curl_errno

استفاده کن و دوباره تست کن؛
http://www.php.net/manual/en/function.curl-errno.php


-------------
چیزی که  مطمنم هستیم بنا به حرف شما اینه که کد شما تا اینجا اجرا میشه
کد:
$output=curl_exec($ch);

پس بعد از این تابع از curl_errno  استفاده کن و ببین با موفقیت اجرا شده یا نه .. و بعدش تصمیم گیری کن در مورد خروجیت..



--------

تست کن نتیجه رو اعلام کن بی زحمت
۲۵-مهر-۱۳۹۶, ۱۶:۵۸:۵۹
وب سایت ارسال‌ها
پاسخ
تشکر شده توسط : 1نفر
lord_viper غایب
مدیر کل انجمن
*****

ارسال‌ها: 3,949
موضوع‌ها: 352
تاریخ عضویت: بهمن ۱۳۸۴

تشکرها : 5193
( 9875 تشکر در 2650 ارسال )
ارسال: #3
RE: curl - خطای 504 Gateway Timeout
کلا server not found هست

کد:
* Could not resolve host: abc.ir
* Closing connection 0
* Could not resolve host: abc.ir
* Closing connection 0

[تصویر:  xshon.png]
از آن نماز که خود هیچ از آن نمی فهمی خدا چه فایده و بهره اکتساب کند
تفاخری نبود مر خدای عالم را که چون تو ابلهی او را خدا حساب کند
۲۶-مهر-۱۳۹۶, ۱۰:۵۸:۳۶
وب سایت ارسال‌ها
پاسخ
تشکر شده توسط : babyy
crafcrab آفلاین
كاربر دو ستاره
**

ارسال‌ها: 216
موضوع‌ها: 79
تاریخ عضویت: مرداد ۱۳۸۹

تشکرها : 42
( 33 تشکر در 31 ارسال )
ارسال: #4
RE: curl - خطای 504 Gateway Timeout
(۲۶-مهر-۱۳۹۶, ۱۰:۵۸:۳۶)lord_viper نوشته است: کلا server not found هست

کد:
* Could not resolve host: abc.ir
* Closing connection 0
* Could not resolve host: abc.ir
* Closing connection 0

یعنی چی؟
من یک سایت تست نوشتم :|
abc.ir سایت نیست که مثال هست
۲۸-مهر-۱۳۹۶, ۱۵:۲۹:۰۷
ارسال‌ها
پاسخ
تشکر شده توسط : babyy, babyy
babyy آفلاین
بازنشسته
*****

ارسال‌ها: 3,095
موضوع‌ها: 141
تاریخ عضویت: مرداد ۱۳۸۷

تشکرها : 35081
( 26090 تشکر در 9068 ارسال )
ارسال: #5
RE: curl - خطای 504 Gateway Timeout
(۲۸-مهر-۱۳۹۶, ۱۵:۲۹:۰۷)crafcrab نوشته است: یعنی چی؟
من یک سایت تست نوشتم :|
abc.ir سایت نیست که مثال هست

همینی که هست خنده بلد − بهینه شده برای ورژن جدید  مشکل داری اخطار دریافت میکنی خنده بلد − بهینه شده برای ورژن جدید خنده بلد − بهینه شده برای ورژن جدید زبون دراز − بهینه شده برای ویرژن جدید زبون دراز − بهینه شده برای ویرژن جدید

ازت دوتا تشکر کردم؛ قدر منو رو بدون خنده بلد − بهینه شده برای ورژن جدیدخنده بلد − بهینه شده برای ورژن جدید

-----

با errno تست کردی؟ مشکل پا برجاست؟ یا حل شد؟

کسی راه حل دیگه ای پیشنهاد داد؟
(آخرین ویرایش در این ارسال: ۲۹-مهر-۱۳۹۶, ۰۱:۴۶:۱۴، توسط babyy.)
۲۹-مهر-۱۳۹۶, ۰۱:۴۵:۱۶
وب سایت ارسال‌ها
پاسخ
lord_viper غایب
مدیر کل انجمن
*****

ارسال‌ها: 3,949
موضوع‌ها: 352
تاریخ عضویت: بهمن ۱۳۸۴

تشکرها : 5193
( 9875 تشکر در 2650 ارسال )
ارسال: #6
RE: curl - خطای 504 Gateway Timeout
یه سوالی که دارم چرا پارامترها رو به صورت xml ارسال میکنید؟

[تصویر:  xshon.png]
از آن نماز که خود هیچ از آن نمی فهمی خدا چه فایده و بهره اکتساب کند
تفاخری نبود مر خدای عالم را که چون تو ابلهی او را خدا حساب کند
۲۹-مهر-۱۳۹۶, ۱۳:۰۰:۰۴
وب سایت ارسال‌ها
پاسخ
crafcrab آفلاین
كاربر دو ستاره
**

ارسال‌ها: 216
موضوع‌ها: 79
تاریخ عضویت: مرداد ۱۳۸۹

تشکرها : 42
( 33 تشکر در 31 ارسال )
ارسال: #7
RE: curl - خطای 504 Gateway Timeout
مشکل هنوز وجود داره ولی هنوز رخ نداده که بتونم تست کنم روش شما رو
در اصل مدتی هم هست api آنها Down شده و در حال debug هستن
(آخرین ویرایش در این ارسال: ۱۹-آبان-۱۳۹۶, ۱۲:۵۲:۴۳، توسط crafcrab.)
۱۹-آبان-۱۳۹۶, ۱۲:۴۹:۵۳
ارسال‌ها
پاسخ
crafcrab آفلاین
كاربر دو ستاره
**

ارسال‌ها: 216
موضوع‌ها: 79
تاریخ عضویت: مرداد ۱۳۸۹

تشکرها : 42
( 33 تشکر در 31 ارسال )
ارسال: #8
RE: curl - خطای 504 Gateway Timeout
بله پیام ها به صورت xml ارسال میشود
۱۹-آبان-۱۳۹۶, ۱۲:۵۰:۱۰
ارسال‌ها
پاسخ
crafcrab آفلاین
كاربر دو ستاره
**

ارسال‌ها: 216
موضوع‌ها: 79
تاریخ عضویت: مرداد ۱۳۸۹

تشکرها : 42
( 33 تشکر در 31 ارسال )
ارسال: #9
RE: curl - خطای 504 Gateway Timeout
برای این که تیمی که api نوشته گفته xml ارسال کنم
۱۹-آبان-۱۳۹۶, ۱۲:۵۱:۱۲
ارسال‌ها
پاسخ


موضوعات مرتبط با این موضوع...
موضوع نویسنده پاسخ بازدید آخرین ارسال
  خطای Invalid argument supplied for foreach web_dev 7 1,764 ۰۹-بهمن-۱۳۹۷, ۰۰:۲۰:۱۲
آخرین ارسال: nImaarek
  تابع curl [کمک] rixi 9 5,598 ۲۶-فروردین-۱۳۹۰, ۱۵:۰۶:۲۲
آخرین ارسال: rixi

پرش به انجمن:


کاربرانِ درحال بازدید از این موضوع: 3 مهمان

صفحه‌ی تماس | IranVig | بازگشت به بالا | | بایگانی | پیوند سایتی RSS