علاقه مندی
ورود / ثبت نام
  • محصولات
    • ابزار دقیق
      • اسیلوسکوپ
      • USB تستر
      • تستر SMD
      • تستر شبکه و زوج یاب
      • تستر ولتاژ دوشاخ
      • بادسنج
      • دورسنج
      • صوت سنج
      • دماسنج و رطوبت سنج
      • فازیاب
      • متر لیزری
      • کلمپ متر
      • لوکس متر
      • LCR متر
      • مولتی متر
      • وات متر
    • قطعات و تجهیزات الکترونیک
      • آی سی
      • انواع ترانزیستور
      • انواع خازن
      • انواع دیود
      • انواع کانکتور
      • انواع مقاومت
    • ابزارآلات برقی
      • التراسونیک
      • پری هیتر
      • پیچ گوشتی برقی و شارژی
      • تفنگ چسب حرارتی
      • دستگاه پاک کننده چسب
      • دستگاه هیترو هویه
      • سپراتور
      • سشوار صنعتی
      • قلع کش برقی
      • لامپ UV
      • مینی فرز و مینی دریل
      • هویه قلمی
    • ابزار دستی
      • آچار آلن
      • آچار بکس
      • آچار پرس شبکه
      • آچار پرس کانکتور
      • آچار فرانسه
      • آچار پانچ و کروز
      • آی سی کش
      • ابزار لحیم کاری
      • اسپاتول و قاب باز کن
      • انبر دست
      • انبر قفلی
      • انواع گیره
      • پایه هویه
      • پنس
      • پیچ گوشتی
      • تاچ کش
      • جا الکلی
      • خار باز کن
      • دم باریک
      • سوهان
      • سیم چین
      • سیم لخت کن
    • لوپ و ذره‌بین
      • لوپ دو چشمی
      • لوپ سه چشمی
      • لوپ دیجیتال
      • تجهیزات جانبی لوپ
    • سایر
  • دوربین مداربسته
  • تماس با ما
  • درباره ما
0 مقایسه
1 محصول / 7,350,000 تومان
مارا دنبال کنید
منو
1 محصول / 7,350,000 تومان
View cart “آمپرمتر کلمپی یونیتی UNI_T UT208B” has been added to your cart.
sunshine-tools
بزرگنمایی تصویر
Home ابزار دقیق مولتی متر مولتی متر و اهم متر سانشاین SUNSHINE DT_17N
مولتی متر دیجیتال فلوک FLUKE 117 17,900,000 تومان
بازگشت به محصولات
مولتی متر و اهم متر سانشاین SUNSHINE DT_9205E 350,000 تومان
SUNSHINE-TOOLS

مولتی متر و اهم متر سانشاین SUNSHINE DT_17N

1,460,000 تومان

  1. اندازه گیری شدت جریان.
  2. True RMS.
  3. DATA HOLD.
  4. تست دیود.
مقایسه
افزودن به علاقه مندی
Categories: ابزار دقیق, مولتی متر
Share:
  • Description
  • Additional information
  • Reviews (0)
  • خرید و فروش
Description

مولتی متر و اهم متر سانشاین SUNSHINE DT_17N(مناسب تشخیص کشی جریان برد گوشی)، دارای ویژگی های زیر میباشد:

  • تست دما: 20- الی 1000 درجه سانتیگراد
  • تست بازر: 50+_20 اهم
  • تست اتصال کوتاه: 1mA تا 3V
  • فرکان: 10Hz تا 100kHz
  • تست خازن: 60 تانو فاراد تا 6000 میکرو فاراد
  • مقاومت: 600 اهم تا 600 کیلو اهم تا 60 میلی اهم
  • جربان متناوب: 600uA تا 600mA تا 10A
  • جریان مستقیم: 600uA تا 600mA تا 10A
  • ولتاژ متناوب: 600mV تا 750mV
  • ولتاژ مستقیم: 600mV تا 1000mV
  • دارای صفحه نمایش ال‌سی‌دی با نمایش 4 رقمی
  • دارای کلید HOLD جهت ذخیره سازی اطلاعات اندازه گیری شده
  • آلارم باتری در هنگام ضعیف بودن شارژ باتری
  • بروزرسانی مقادیر و اندازه گیری در هر 3 ثانیه
  • تست دیود
  • تست اتصالات مدار
  • اندازه گیری مقاومت
  • اندازه گیری شدت جریان
  • اندازه گیری ولتاژ
  • اندازه گیری RMS واقعی

ابزاردقیق

 

Additional information
Brand

SUNSHINE-TOOLS

Reviews (0)

Reviews

There are no reviews yet.

Be the first to review “مولتی متر و اهم متر سانشاین SUNSHINE DT_17N” لغو پاسخ

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

خرید و فروش

Related products

hioki
مقایسه

کلمپ آمپر متر AC/DC هیوکی مدل HIOKI 3288-20 AC/DC

ابزار دقیق, کلمپ متر
10,950,000 تومان
آمپرمتر مدل 20-3288 هیوکی یک دستگاه اندازه‌گیری الکتریکی با دقت بالا و ویژگی‌های گسترده است. این دستگاه مناسب برای کاربردهای صنعتی و تجاری می‌باشد. با توانایی اندازه‌گیری جریان AC/DC، ولتاژ AC/DC، مقاومت و تست پیوستگی، این آمپرمتر یک ابزار قدرتمند برای مهندسان و تکنسین‌های برق و الکترونیک است.
افزودن به علاقه مندی
Add to cart
مشاهده سریع
unit
219
مقایسه

کلمپ آمپرمتر AC یونیتی UNI_T UT-219M

ابزار دقیق, کلمپ متر
9,750,000 تومان
کلمپ آمپرمتر UNI-T UT-219M دارای ویژگی هایی نظیر:
  1. قابلیت اندازه گیری ظرفیت خازنی، فرکانس و دیوتی سایکل
  2. داراری رنج دستی و اتوماتیک
  3. دارای IP54 و مقاوم در برابر آب و ضربه
افزودن به علاقه مندی
Add to cart
مشاهده سریع
unit
204+
204+
مقایسه

آمپرمتر کلمپی یونیتی +UNI_T UT204

ابزار دقیق, کلمپ متر
3,000,000 تومان
آمپرمتر کلمپی یونیتی +UN_T UT-204
  1. قابلیت پرکاربرد ردیابی فازغیر تماسی NCV
  2. نمایش اعداد تا 6000
  3. مجهز به قابلیت DATA HOLD
  4. قابلیت تست پیوستگی و دیود
افزودن به علاقه مندی
Add to cart
مشاهده سریع
hioki
4256
4256
مقایسه

مولتی متر هیوکی HIOKI DT-4256

ابزار دقیق, مولتی متر
10,600,000 تومان
مولتی متر هیوکی مدل HIOKI DT-4256 مناسب برای استفاده در زمینه الکترونیک و الکتریک میباشد و همچنین این مدل مولتی متر هیوکی دارای فازیاب هم هست.
افزودن به علاقه مندی
Add to cart
مشاهده سریع
proskit
آچار فرانسه 2.5 اینچی پروسکیت ProsKit HW-003مولتی متر اتورنج دیجیتال پروسکیت ProsKit MT-1232 مولتی متر سلکتور دیجیتال پروسکیت ProsKit MT-1280
مقایسه

مولتی متر سلکتور دیجیتال پروسکیت ProsKit MT-1280

ابزار دقیق, مولتی متر
2,000,000 تومان

مشخصات فنی مولتی متر پروسکیت مدل ProsKit MT-1280:

  • مولتی متر دیجیتال
  • دستی
  • سلکتوری
  • صفحه نمایش 1/2 3 دیجیت 1999 کانت
  • دارای صفحه نمایش بزرگ و با کیفیت
  • اندازه گیری ولتاژ AC از 2 تا 750 ولت
  • اندازه گیری ولتاژ DC از 200 میلی ولت تا 1000 ولت
  • اندازه گیری جریان DC از 200 میکرو آمپر تا 20 آمپر
  • اندازه گیری جریان AC از 200 میلی آمپر تا 120 آمپر
  • اندازه گیری مقاومت از 200 اهم تا 200 مگا اهم
  • اندازه گیری خازن از 20 نانو فاراد تا 200 میکرو فاراد
  • اندازه گیری فرکانس از 1هرتز تا 10 مگاهرتز
  • دماسنج از منفی 20 تا 1000 درجه سانتیگراد
  • دارای تست دیود
  • دارای تست پیوستگی
  • تست ترانزیستور
  • دارای استاندارد CAT III 1000V
  • دارای استاندارد CE
  • دارای استاندارد IEN61010-1
  • دارای فیوز محافظ از دستگاه
  • دارای نور صفحه نمایش
  • دارای Data HOLD
  • تغذیه دستگاه یک عدد باتری کتابی 9V
  • دارای پراب دما سنج، پراب تست ترانزیستور، و پراب مولتی متر
افزودن به علاقه مندی
Add to cart
مشاهده سریع
proskit
مولتی متر سلکتور دیجیتال پروسکیت ProsKit MT-1280جعبه قطعات کیفی مولتی متر اتورنج دیجیتال پروسکیت ProsKit MT-1232
مقایسه

مولتی متر اتورنج دیجیتال پروسکیت ProsKit MT-1232

ابزار دقیق, مولتی متر

مشخصات فنی مولتی متر پروسکیت مدل ProsKit MT-1232:

  • مولتی متر دیجیتال
  • دستی
  • اتورنج
  • صفحه نمایش 3/4 3 دیجیت 3999 کانت
  • دارای صفحه نمایش بزرگ و با کیفیت
  • اندازه گیری ولتاژ AC از 4 تا 600 ولت
  • اندازه گیری ولتاژ DC از 400 میلی ولت تا 600 ولت
  • اندازه گیری جریان DC از 400 میکرو آمپر تا 10 آمپر
  • اندازه گیری جریان AC از 400 میکرو آمپر تا 10 آمپر
  • اندازه گیری مقاومت از 400 اهم تا 40 مگا اهم
  • اندازه گیری خازن از 4 نانو فاراد تا 100 میکرو فاراد
  • اندازه گیری فرکانس از 1هرتز تا 10 مگاهرتز
  • دماسنج از منفی 20 تا 1000 درجه سانتیگراد
  • دارای تست دیود
  • دارای تست پیوستگی
  • دارای استاندارد CAT III 600V
  • دارای استاندارد CE
  • دارای استاندارد IEN61010-1
  • دارای فیوز محافظ از دستگاه
  • دارای نور صفحه نمایش
  • دارای Data HOLD
  • تغذیه دستگاه دو عدد باتری قلم 1.5V AA
افزودن به علاقه مندی
Read more
مشاهده سریع
unit
205E
205E
مقایسه

آمپرمتر کلمپی یونیتی UNI_T UT205E

ابزار دقیق, کلمپ متر
3,440,000 تومان
آمپرمتر کلمپی یونیتی UNI_T UT-205E
  1. برای اندازه گیری جریان AC تا 1000 آمپر و ولتاژ AC/DC ولت مناسب است.
  2. قابلیت اندازه گیری true RMS
  3. دارای ویژگی DATA HOLD
افزودن به علاقه مندی
Add to cart
مشاهده سریع
unit
202BT
مقایسه

آمپرمتر کلمپی یونیتی UNI_T UT202BT

ابزار دقیق, کلمپ متر
3,570,000 تومان
آمپرمتر کلمپی یونیتی UNI_T UT202BT
  1. دستگاه قابلیت تنظیم خودکار بازه سنجش را دارد.
  2. دستگاه قابلیت مکث در حین اندازه گیری و نمایش پیک بار را دارد.
افزودن به علاقه مندی
Add to cart
مشاهده سریع
FLUKE
RELIFE
quick
GOOT
MINI-CIRCUITS
PROSKIT
UNIT
HIKVISION
yaxun
RIGOL
ANALOG-DVICES
Hioki
DAHUA
SUNSHINE-TOOLS
logo12

ابزارونیک مرجع ابزارآلات الکترونیکی

  • ایران تهران خیابان جمهوری
  • 021-66751084
  • info@abzaronic.com
آخرین مقالات
  • ایران وود مارت بهترین انتخاب
  • electronics-2-blog-7
    بهترین انتخاب در کامپیوتر و لپ تاب
  • دکوراسیون داخلی خونه
  • میز های ایرانی در برند مختلف
پر امتیازترین محصولات
  • میگر دیجیتال یونیتی UNI_T UT502A 8,790,000 تومان
  • منبع تغذیه یونیتی UNI_T UTP 3305II 15,960,000 تومان
  • هیتر دیجیتال SUGON 8620DX 9,490,000 تومان
لینک های مفید
  • قوانین و مقررات
  • سوالات متداول
  • خبرنامه
  • تماس با ما
  • اخبار جدید
  • خرید های قدیمی
منوی فوتر
  • اینستاگرام
  • تماس با ما
محتوای این سایت شخصی می‌باشد.
  • منو
  • دسته بندی ها
  • محصولات
    • ابزار دقیق
      • اسیلوسکوپ
      • USB تستر
      • تستر SMD
      • تستر شبکه و زوج یاب
      • تستر ولتاژ دوشاخ
      • بادسنج
      • دورسنج
      • صوت سنج
      • دماسنج و رطوبت سنج
      • فازیاب
      • متر لیزری
      • کلمپ متر
      • لوکس متر
      • LCR متر
      • مولتی متر
      • وات متر
    • قطعات و تجهیزات الکترونیک
      • آی سی
      • انواع ترانزیستور
      • انواع خازن
      • انواع دیود
      • انواع کانکتور
      • انواع مقاومت
    • ابزارآلات برقی
      • التراسونیک
      • پری هیتر
      • پیچ گوشتی برقی و شارژی
      • تفنگ چسب حرارتی
      • دستگاه پاک کننده چسب
      • دستگاه هیترو هویه
      • سپراتور
      • سشوار صنعتی
      • قلع کش برقی
      • لامپ UV
      • مینی فرز و مینی دریل
      • هویه قلمی
    • ابزار دستی
      • آچار آلن
      • آچار بکس
      • آچار پرس شبکه
      • آچار پرس کانکتور
      • آچار فرانسه
      • آچار پانچ و کروز
      • آی سی کش
      • ابزار لحیم کاری
      • اسپاتول و قاب باز کن
      • انبر دست
      • انبر قفلی
      • انواع گیره
      • پایه هویه
      • پنس
      • پیچ گوشتی
      • تاچ کش
      • جا الکلی
      • خار باز کن
      • دم باریک
      • سوهان
      • سیم چین
      • سیم لخت کن
    • لوپ و ذره‌بین
      • لوپ دو چشمی
      • لوپ سه چشمی
      • لوپ دیجیتال
      • تجهیزات جانبی لوپ
    • سایر
  • دوربین مداربسته
  • تماس با ما
  • درباره ما
  • محصولات
    • ابزار دقیق
      • اسیلوسکوپ
      • USB تستر
      • تستر SMD
      • تستر شبکه و زوج یاب
      • تستر ولتاژ دوشاخ
      • بادسنج
      • دورسنج
      • صوت سنج
      • دماسنج و رطوبت سنج
      • فازیاب
      • متر لیزری
      • کلمپ متر
      • لوکس متر
      • LCR متر
      • مولتی متر
      • وات متر
    • قطعات و تجهیزات الکترونیک
      • آی سی
      • انواع ترانزیستور
      • انواع خازن
      • انواع دیود
      • انواع کانکتور
      • انواع مقاومت
    • ابزارآلات برقی
      • التراسونیک
      • پری هیتر
      • پیچ گوشتی برقی و شارژی
      • تفنگ چسب حرارتی
      • دستگاه پاک کننده چسب
      • دستگاه هیترو هویه
      • سپراتور
      • سشوار صنعتی
      • قلع کش برقی
      • لامپ UV
      • مینی فرز و مینی دریل
      • هویه قلمی
    • ابزار دستی
      • آچار آلن
      • آچار بکس
      • آچار پرس شبکه
      • آچار پرس کانکتور
      • آچار فرانسه
      • آچار پانچ و کروز
      • آی سی کش
      • ابزار لحیم کاری
      • اسپاتول و قاب باز کن
      • انبر دست
      • انبر قفلی
      • انواع گیره
      • پایه هویه
      • پنس
      • پیچ گوشتی
      • تاچ کش
      • جا الکلی
      • خار باز کن
      • دم باریک
      • سوهان
      • سیم چین
      • سیم لخت کن
    • لوپ و ذره‌بین
      • لوپ دو چشمی
      • لوپ سه چشمی
      • لوپ دیجیتال
      • تجهیزات جانبی لوپ
    • سایر
  • دوربین مداربسته
  • تماس با ما
  • درباره ما
  • علاقه مندی
  • مقایسه
  • ورود / ثبت نام
سبد خرید
بستن (Esc)

ورود

بستن (Esc)

رمز عبور را فراموش کرده اید؟

هنوز حساب کاربری ندارید؟

ایجاد حساب کاربری
برای دیدن محصولات که دنبال آن هستید تایپ کنید.
rch($done['handle'], $subhandles, true); if (!isset($to_process[$key])) { $to_process[$key] = $done; } } // Parse the finished requests before we start getting the new ones foreach ($to_process as $key => $done) { $options = $requests[$key]['options']; if ($done['result'] !== CURLE_OK) { //get error string for handle. $reason = curl_error($done['handle']); $exception = new CurlException( $reason, CurlException::EASY, $done['handle'], $done['result'] ); $responses[$key] = $exception; $options['hooks']->dispatch('transport.internal.parse_error', [&$responses[$key], $requests[$key]]); } else { $responses[$key] = $subrequests[$key]->process_response($subrequests[$key]->response_data, $options); $options['hooks']->dispatch('transport.internal.parse_response', [&$responses[$key], $requests[$key]]); } curl_multi_remove_handle($multihandle, $done['handle']); curl_close($done['handle']); if (!is_string($responses[$key])) { $options['hooks']->dispatch('multiple.request.complete', [&$responses[$key], $key]); } $completed++; } } while ($active || $completed < $subrequestcount); $request['options']['hooks']->dispatch('curl.after_multi_exec', [&$multihandle]); curl_multi_close($multihandle); return $responses; } /** * Get the cURL handle for use in a multi-request * * @param string $url URL to request * @param array $headers Associative array of request headers * @param string|array $data Data to send either as the POST body, or as parameters in the URL for a GET/HEAD * @param array $options Request options, see {@see \WpOrg\Requests\Requests::response()} for documentation * @return resource|\CurlHandle Subrequest's cURL handle */ public function &get_subrequest_handle($url, $headers, $data, $options) { $this->setup_handle($url, $headers, $data, $options); if ($options['filename'] !== false) { $this->stream_handle = fopen($options['filename'], 'wb'); } $this->response_data = ''; $this->response_bytes = 0; $this->response_byte_limit = false; if ($options['max_bytes'] !== false) { $this->response_byte_limit = $options['max_bytes']; } $this->hooks = $options['hooks']; return $this->handle; } /** * Setup the cURL handle for the given data * * @param string $url URL to request * @param array $headers Associative array of request headers * @param string|array $data Data to send either as the POST body, or as parameters in the URL for a GET/HEAD * @param array $options Request options, see {@see \WpOrg\Requests\Requests::response()} for documentation */ private function setup_handle($url, $headers, $data, $options) { $options['hooks']->dispatch('curl.before_request', [&$this->handle]); // Force closing the connection for old versions of cURL (<7.22). if (!isset($headers['Connection'])) { $headers['Connection'] = 'close'; } /** * Add "Expect" header. * * By default, cURL adds a "Expect: 100-Continue" to most requests. This header can * add as much as a second to the time it takes for cURL to perform a request. To * prevent this, we need to set an empty "Expect" header. To match the behaviour of * Guzzle, we'll add the empty header to requests that are smaller than 1 MB and use * HTTP/1.1. * * https://curl.se/mail/lib-2017-07/0013.html */ if (!isset($headers['Expect']) && $options['protocol_version'] === 1.1) { $headers['Expect'] = $this->get_expect_header($data); } $headers = Requests::flatten($headers); if (!empty($data)) { $data_format = $options['data_format']; if ($data_format === 'query') { $url = self::format_get($url, $data); $data = ''; } elseif (!is_string($data)) { $data = http_build_query($data, '', '&'); } } switch ($options['type']) { case Requests::POST: curl_setopt($this->handle, CURLOPT_POST, true); curl_setopt($this->handle, CURLOPT_POSTFIELDS, $data); break; case Requests::HEAD: curl_setopt($this->handle, CURLOPT_CUSTOMREQUEST, $options['type']); curl_setopt($this->handle, CURLOPT_NOBODY, true); break; case Requests::TRACE: curl_setopt($this->handle, CURLOPT_CUSTOMREQUEST, $options['type']); break; case Requests::PATCH: case Requests::PUT: case Requests::DELETE: case Requests::OPTIONS: default: curl_setopt($this->handle, CURLOPT_CUSTOMREQUEST, $options['type']); if (!empty($data)) { curl_setopt($this->handle, CURLOPT_POSTFIELDS, $data); } } // cURL requires a minimum timeout of 1 second when using the system // DNS resolver, as it uses `alarm()`, which is second resolution only. // There's no way to detect which DNS resolver is being used from our // end, so we need to round up regardless of the supplied timeout. // // https://github.com/curl/curl/blob/4f45240bc84a9aa648c8f7243be7b79e9f9323a5/lib/hostip.c#L606-L609 $timeout = max($options['timeout'], 1); if (is_int($timeout) || $this->version < self::CURL_7_16_2) { curl_setopt($this->handle, CURLOPT_TIMEOUT, ceil($timeout)); } else { // phpcs:ignore PHPCompatibility.Constants.NewConstants.curlopt_timeout_msFound curl_setopt($this->handle, CURLOPT_TIMEOUT_MS, round($timeout * 1000)); } if (is_int($options['connect_timeout']) || $this->version < self::CURL_7_16_2) { curl_setopt($this->handle, CURLOPT_CONNECTTIMEOUT, ceil($options['connect_timeout'])); } else { // phpcs:ignore PHPCompatibility.Constants.NewConstants.curlopt_connecttimeout_msFound curl_setopt($this->handle, CURLOPT_CONNECTTIMEOUT_MS, round($options['connect_timeout'] * 1000)); } curl_setopt($this->handle, CURLOPT_URL, $url); curl_setopt($this->handle, CURLOPT_USERAGENT, $options['useragent']); if (!empty($headers)) { curl_setopt($this->handle, CURLOPT_HTTPHEADER, $headers); } if ($options['protocol_version'] === 1.1) { curl_setopt($this->handle, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1); } else { curl_setopt($this->handle, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_0); } if ($options['blocking'] === true) { curl_setopt($this->handle, CURLOPT_HEADERFUNCTION, [$this, 'stream_headers']); curl_setopt($this->handle, CURLOPT_WRITEFUNCTION, [$this, 'stream_body']); curl_setopt($this->handle, CURLOPT_BUFFERSIZE, Requests::BUFFER_SIZE); } } /** * Process a response * * @param string $response Response data from the body * @param array $options Request options * @return string|false HTTP response data including headers. False if non-blocking. * @throws \WpOrg\Requests\Exception If the request resulted in a cURL error. */ public function process_response($response, $options) { if ($options['blocking'] === false) { $fake_headers = ''; $options['hooks']->dispatch('curl.after_request', [&$fake_headers]); return false; } if ($options['filename'] !== false && $this->stream_handle) { fclose($this->stream_handle); $this->headers = trim($this->headers); } else { $this->headers .= $response; } if (curl_errno($this->handle)) { $error = sprintf( 'cURL error %s: %s', curl_errno($this->handle), curl_error($this->handle) ); throw new Exception($error, 'curlerror', $this->handle); } $this->info = curl_getinfo($this->handle); $options['hooks']->dispatch('curl.after_request', [&$this->headers, &$this->info]); return $this->headers; } /** * Collect the headers as they are received * * @param resource|\CurlHandle $handle cURL handle * @param string $headers Header string * @return integer Length of provided header */ public function stream_headers($handle, $headers) { // Why do we do this? cURL will send both the final response and any // interim responses, such as a 100 Continue. We don't need that. // (We may want to keep this somewhere just in case) if ($this->done_headers) { $this->headers = ''; $this->done_headers = false; } $this->headers .= $headers; if ($headers === "\r\n") { $this->done_headers = true; } return strlen($headers); } /** * Collect data as it's received * * @since 1.6.1 * * @param resource|\CurlHandle $handle cURL handle * @param string $data Body data * @return integer Length of provided data */ public function stream_body($handle, $data) { $this->hooks->dispatch('request.progress', [$data, $this->response_bytes, $this->response_byte_limit]); $data_length = strlen($data); // Are we limiting the response size? if ($this->response_byte_limit) { if ($this->response_bytes === $this->response_byte_limit) { // Already at maximum, move on return $data_length; } if (($this->response_bytes + $data_length) > $this->response_byte_limit) { // Limit the length $limited_length = ($this->response_byte_limit - $this->response_bytes); $data = substr($data, 0, $limited_length); } } if ($this->stream_handle) { fwrite($this->stream_handle, $data); } else { $this->response_data .= $data; } $this->response_bytes += strlen($data); return $data_length; } /** * Format a URL given GET data * * @param string $url Original URL. * @param array|object $data Data to build query using, see {@link https://www.php.net/http_build_query} * @return string URL with data */ private static function format_get($url, $data) { if (!empty($data)) { $query = ''; $url_parts = parse_url($url); if (empty($url_parts['query'])) { $url_parts['query'] = ''; } else { $query = $url_parts['query']; } $query .= '&' . http_build_query($data, '', '&'); $query = trim($query, '&'); if (empty($url_parts['query'])) { $url .= '?' . $query; } else { $url = str_replace($url_parts['query'], $query, $url); } } return $url; } /** * Self-test whether the transport can be used. * * The available capabilities to test for can be found in {@see \WpOrg\Requests\Capability}. * * @codeCoverageIgnore * @param array $capabilities Optional. Associative array of capabilities to test against, i.e. `['' => true]`. * @return bool Whether the transport can be used. */ public static function test($capabilities = []) { if (!function_exists('curl_init') || !function_exists('curl_exec')) { return false; } // If needed, check that our installed curl version supports SSL if (isset($capabilities[Capability::SSL]) && $capabilities[Capability::SSL]) { $curl_version = curl_version(); if (!(CURL_VERSION_SSL & $curl_version['features'])) { return false; } } return true; } /** * Get the correct "Expect" header for the given request data. * * @param string|array $data Data to send either as the POST body, or as parameters in the URL for a GET/HEAD. * @return string The "Expect" header. */ private function get_expect_header($data) { if (!is_array($data)) { return strlen((string) $data) >= 1048576 ? '100-Continue' : ''; } $bytesize = 0; $iterator = new RecursiveIteratorIterator(new RecursiveArrayIterator($data)); foreach ($iterator as $datum) { $bytesize += strlen((string) $datum); if ($bytesize >= 1048576) { return '100-Continue'; } } return ''; } }