/** * HTTP API: WP_Http_Curl class * * @package WordPress * @subpackage HTTP * @since 4.4.0 */ /** * Core class used to integrate Curl as an HTTP transport. * * HTTP request method uses Curl extension to retrieve the url. * * Requires the Curl extension to be installed. * * @since 2.7.0 * @deprecated 6.4.0 Use WP_Http * @see WP_Http */ #[AllowDynamicProperties] class WP_Http_Curl { /** * Temporary header storage for during requests. * * @since 3.2.0 * @var string */ private $headers = ''; /** * Temporary body storage for during requests. * * @since 3.6.0 * @var string */ private $body = ''; /** * The maximum amount of data to receive from the remote server. * * @since 3.6.0 * @var int|false */ private $max_body_length = false; /** * The file resource used for streaming to file. * * @since 3.6.0 * @var resource|false */ private $stream_handle = false; /** * The total bytes written in the current request. * * @since 4.1.0 * @var int */ private $bytes_written_total = 0; /** * Send a HTTP request to a URI using cURL extension. * * @since 2.7.0 * * @param string $url The request URL. * @param string|array $args Optional. Override the defaults. * @return array|WP_Error Array containing 'headers', 'body', 'response', 'cookies', 'filename'. A WP_Error instance upon error */ public function request( $url, $args = array() ) { $defaults = array( 'method' => 'GET', 'timeout' => 5, 'redirection' => 5, 'httpversion' => '1.0', 'blocking' => true, 'headers' => array(), 'body' => null, 'cookies' => array(), 'decompress' => false, 'stream' => false, 'filename' => null, ); $parsed_args = wp_parse_args( $args, $defaults ); if ( isset( $parsed_args['headers']['User-Agent'] ) ) { $parsed_args['user-agent'] = $parsed_args['headers']['User-Agent']; unset( $parsed_args['headers']['User-Agent'] ); } elseif ( isset( $parsed_args['headers']['user-agent'] ) ) { $parsed_args['user-agent'] = $parsed_args['headers']['user-agent']; unset( $parsed_args['headers']['user-agent'] ); } // Construct Cookie: header if any cookies are set. WP_Http::buildCookieHeader( $parsed_args ); $handle = curl_init(); // cURL offers really easy proxy support. $proxy = new WP_HTTP_Proxy(); if ( $proxy->is_enabled() && $proxy->send_through_proxy( $url ) ) { curl_setopt( $handle, CURLOPT_PROXYTYPE, CURLPROXY_HTTP ); curl_setopt( $handle, CURLOPT_PROXY, $proxy->host() ); curl_setopt( $handle, CURLOPT_PROXYPORT, $proxy->port() ); if ( $proxy->use_authentication() ) { curl_setopt( $handle, CURLOPT_PROXYAUTH, CURLAUTH_ANY ); curl_setopt( $handle, CURLOPT_PROXYUSERPWD, $proxy->authentication() ); } } $is_local = isset( $parsed_args['local'] ) && $parsed_args['local']; $ssl_verify = isset( $parsed_args['sslverify'] ) && $parsed_args['sslverify']; if ( $is_local ) { /** This filter is documented in wp-includes/class-wp-http-streams.php */ $ssl_verify = apply_filters( 'https_local_ssl_verify', $ssl_verify, $url ); } elseif ( ! $is_local ) { /** This filter is documented in wp-includes/class-wp-http.php */ $ssl_verify = apply_filters( 'https_ssl_verify', $ssl_verify, $url ); } /* * CURLOPT_TIMEOUT and CURLOPT_CONNECTTIMEOUT expect integers. Have to use ceil since. * a value of 0 will allow an unlimited timeout. */ $timeout = (int) ceil( $parsed_args['timeout'] ); curl_setopt( $handle, CURLOPT_CONNECTTIMEOUT, $timeout ); curl_setopt( $handle, CURLOPT_TIMEOUT, $timeout ); curl_setopt( $handle, CURLOPT_URL, $url ); curl_setopt( $handle, CURLOPT_RETURNTRANSFER, true ); curl_setopt( $handle, CURLOPT_SSL_VERIFYHOST, ( true === $ssl_verify ) ? 2 : false ); curl_setopt( $handle, CURLOPT_SSL_VERIFYPEER, $ssl_verify ); if ( $ssl_verify ) { curl_setopt( $handle, CURLOPT_CAINFO, $parsed_args['sslcertificates'] ); } curl_setopt( $handle, CURLOPT_USERAGENT, $parsed_args['user-agent'] ); /* * The option doesn't work with safe mode or when open_basedir is set, and there's * a bug #17490 with redirected POST requests, so handle redirections outside Curl. */ curl_setopt( $handle, CURLOPT_FOLLOWLOCATION, false ); curl_setopt( $handle, CURLOPT_PROTOCOLS, CURLPROTO_HTTP | CURLPROTO_HTTPS ); switch ( $parsed_args['method'] ) { case 'HEAD': curl_setopt( $handle, CURLOPT_NOBODY, true ); break; case 'POST': curl_setopt( $handle, CURLOPT_POST, true ); curl_setopt( $handle, CURLOPT_POSTFIELDS, $parsed_args['body'] ); break; case 'PUT': curl_setopt( $handle, CURLOPT_CUSTOMREQUEST, 'PUT' ); curl_setopt( $handle, CURLOPT_POSTFIELDS, $parsed_args['body'] ); break; default: curl_setopt( $handle, CURLOPT_CUSTOMREQUEST, $parsed_args['method'] ); if ( ! is_null( $parsed_args['body'] ) ) { curl_setopt( $handle, CURLOPT_POSTFIELDS, $parsed_args['body'] ); } break; } if ( true === $parsed_args['blocking'] ) { curl_setopt( $handle, CURLOPT_HEADERFUNCTION, array( $this, 'stream_headers' ) ); curl_setopt( $handle, CURLOPT_WRITEFUNCTION, array( $this, 'stream_body' ) ); } curl_setopt( $handle, CURLOPT_HEADER, false ); if ( isset( $parsed_args['limit_response_size'] ) ) { $this->max_body_length = (int) $parsed_args['limit_response_size']; } else { $this->max_body_length = false; } // If streaming to a file open a file handle, and setup our curl streaming handler. if ( $parsed_args['stream'] ) { if ( ! WP_DEBUG ) { $this->stream_handle = @fopen( $parsed_args['filename'], 'w+' ); } else { $this->stream_handle = fopen( $parsed_args['filename'], 'w+' ); } if ( ! $this->stream_handle ) { return new WP_Error( 'http_request_failed', sprintf( /* translators: 1: fopen(), 2: File name. */ __( 'Could not open handle for %1$s to %2$s.' ), 'fopen()', $parsed_args['filename'] ) ); } } else { $this->stream_handle = false; } if ( ! empty( $parsed_args['headers'] ) ) { // cURL expects full header strings in each element. $headers = array(); foreach ( $parsed_args['headers'] as $name => $value ) { $headers[] = "{$name}: $value"; } curl_setopt( $handle, CURLOPT_HTTPHEADER, $headers ); } if ( '1.0' === $parsed_args['httpversion'] ) { curl_setopt( $handle, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_0 ); } else { curl_setopt( $handle, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1 ); } /** * Fires before the cURL request is executed. * * Cookies are not currently handled by the HTTP API. This action allows * plugins to handle cookies themselves. * * @since 2.8.0 * * @param resource $handle The cURL handle returned by curl_init() (passed by reference). * @param array $parsed_args The HTTP request arguments. * @param string $url The request URL. */ do_action_ref_array( 'http_api_curl', array( &$handle, $parsed_args, $url ) ); // We don't need to return the body, so don't. Just execute request and return. if ( ! $parsed_args['blocking'] ) { curl_exec( $handle ); $curl_error = curl_error( $handle ); if ( $curl_error ) { if ( PHP_VERSION_ID < 80000 ) { // curl_close() has no effect as of PHP 8.0. curl_close( $handle ); } return new WP_Error( 'http_request_failed', $curl_error ); } if ( in_array( curl_getinfo( $handle, CURLINFO_HTTP_CODE ), array( 301, 302 ), true ) ) { if ( PHP_VERSION_ID < 80000 ) { // curl_close() has no effect as of PHP 8.0. curl_close( $handle ); } return new WP_Error( 'http_request_failed', __( 'Too many redirects.' ) ); } if ( PHP_VERSION_ID < 80000 ) { // curl_close() has no effect as of PHP 8.0. curl_close( $handle ); } return array( 'headers' => array(), 'body' => '', 'response' => array( 'code' => false, 'message' => false, ), 'cookies' => array(), ); } curl_exec( $handle ); $processed_headers = WP_Http::processHeaders( $this->headers, $url ); $body = $this->body; $bytes_written_total = $this->bytes_written_total; $this->headers = ''; $this->body = ''; $this->bytes_written_total = 0; $curl_error = curl_errno( $handle ); // If an error occurred, or, no response. if ( $curl_error || ( 0 === strlen( $body ) && empty( $processed_headers['headers'] ) ) ) { if ( CURLE_WRITE_ERROR /* 23 */ === $curl_error ) { if ( ! $this->max_body_length || $this->max_body_length !== $bytes_written_total ) { if ( $parsed_args['stream'] ) { if ( PHP_VERSION_ID < 80000 ) { // curl_close() has no effect as of PHP 8.0. curl_close( $handle ); } fclose( $this->stream_handle ); return new WP_Error( 'http_request_failed', __( 'Failed to write request to temporary file.' ) ); } else { if ( PHP_VERSION_ID < 80000 ) { // curl_close() has no effect as of PHP 8.0. curl_close( $handle ); } return new WP_Error( 'http_request_failed', curl_error( $handle ) ); } } } else { $curl_error = curl_error( $handle ); if ( $curl_error ) { if ( PHP_VERSION_ID < 80000 ) { // curl_close() has no effect as of PHP 8.0. curl_close( $handle ); } return new WP_Error( 'http_request_failed', $curl_error ); } } if ( in_array( curl_getinfo( $handle, CURLINFO_HTTP_CODE ), array( 301, 302 ), true ) ) { if ( PHP_VERSION_ID < 80000 ) { // curl_close() has no effect as of PHP 8.0. curl_close( $handle ); } return new WP_Error( 'http_request_failed', __( 'Too many redirects.' ) ); } } if ( PHP_VERSION_ID < 80000 ) { // curl_close() has no effect as of PHP 8.0. curl_close( $handle ); } if ( $parsed_args['stream'] ) { fclose( $this->stream_handle ); } $response = array( 'headers' => $processed_headers['headers'], 'body' => null, 'response' => $processed_headers['response'], 'cookies' => $processed_headers['cookies'], 'filename' => $parsed_args['filename'], ); // Handle redirects. $redirect_response = WP_Http::handle_redirects( $url, $parsed_args, $response ); if ( false !== $redirect_response ) { return $redirect_response; } if ( true === $parsed_args['decompress'] && true === WP_Http_Encoding::should_decode( $processed_headers['headers'] ) ) { $body = WP_Http_Encoding::decompress( $body ); } $response['body'] = $body; return $response; } /** * Grabs the headers of the cURL request. * * Each header is sent individually to this callback, and is appended to the `$header` property * for temporary storage. * * @since 3.2.0 * * @param resource $handle cURL handle. * @param string $headers cURL request headers. * @return int Length of the request headers. */ private function stream_headers( $handle, $headers ) { $this->headers .= $headers; return strlen( $headers ); } /** * Grabs the body of the cURL request. * * The contents of the document are passed in chunks, and are appended to the `$body` * property for temporary storage. Returning a length shorter than the length of * `$data` passed in will cause cURL to abort the request with `CURLE_WRITE_ERROR`. * * @since 3.6.0 * * @param resource $handle cURL handle. * @param string $data cURL request body. * @return int Total bytes of data written. */ private function stream_body( $handle, $data ) { $data_length = strlen( $data ); if ( $this->max_body_length && ( $this->bytes_written_total + $data_length ) > $this->max_body_length ) { $data_length = ( $this->max_body_length - $this->bytes_written_total ); $data = substr( $data, 0, $data_length ); } if ( $this->stream_handle ) { $bytes_written = fwrite( $this->stream_handle, $data ); } else { $this->body .= $data; $bytes_written = $data_length; } $this->bytes_written_total += $bytes_written; // Upon event of this function returning less than strlen( $data ) curl will error with CURLE_WRITE_ERROR. return $bytes_written; } /** * Determines whether this class can be used for retrieving a URL. * * @since 2.7.0 * * @param array $args Optional. Array of request arguments. Default empty array. * @return bool False means this class can not be used, true means it can. */ public static function test( $args = array() ) { if ( ! function_exists( 'curl_init' ) || ! function_exists( 'curl_exec' ) ) { return false; } $is_ssl = isset( $args['ssl'] ) && $args['ssl']; if ( $is_ssl ) { $curl_version = curl_version(); // Check whether this cURL version support SSL requests. if ( ! ( CURL_VERSION_SSL & $curl_version['features'] ) ) { return false; } } /** * Filters whether cURL can be used as a transport for retrieving a URL. * * @since 2.7.0 * * @param bool $use_class Whether the class can be used. Default true. * @param array $args An array of request arguments. */ return apply_filters( 'use_curl_transport', true, $args ); } } Pratiche_fibre_e_lutilizzo_innovativo_del_sisal_nellartigianato_moderno – Shweta Poddar Weddings Photography

Pratiche fibre e lutilizzo innovativo del sisal nellartigianato moderno

La fibra di sisal, un dono della natura, ha una storia affascinante e un futuro promettente. Derivata dalle foglie di piante appartenenti al genere Agave, questa fibra naturale è stata utilizzata per secoli in diverse parti del mondo, principalmente per la produzione di corde, spago e tessuti resistenti. Oggi, grazie alle sue proprietà uniche e alla crescente attenzione verso la sostenibilità, il sisal sta vivendo una rinascita, trovando nuove applicazioni nell'artigianato moderno, nell'edilizia ecologica e persino nell'industria automobilistica.

La coltivazione del sisal è tradizionalmente concentrata in regioni tropicali e subtropicali, come il Brasile, la Tanzania, il Kenya e il Messico. Queste aree offrono il clima ideale per la crescita delle piante di agave, garantendo una produzione costante e di alta qualità. La fibra di sisal non è solo un materiale versatile, ma anche un'alternativa ecologicamente responsabile ai materiali sintetici, contribuendo a ridurre l'impatto ambientale e a promuovere un'economia più circolare.

Le Origini e la Storia della Fibra di Sisal

Le radici dell'utilizzo del sisal affondano nelle antiche civiltà precolombiane, dove le popolazioni indigene sfruttavano le fibre vegetali per creare oggetti utili e decorativi. In particolare, i Maya e gli Aztechi utilizzavano le fibre di agave per produrre corde, tessuti e persino carta. Con l'arrivo dei colonizzatori europei, la coltivazione del sisal si diffuse in altre parti del mondo, assumendo un ruolo sempre più importante nell'economia locale. Nel XIX secolo, con l'aumento della domanda di corde e spago per l'industria navale, la produzione di sisal conobbe un'impennata significativa, diventando un'attività economica cruciale per molti paesi tropicali.

L'evoluzione della coltivazione e delle tecniche di lavorazione

Inizialmente, la lavorazione del sisal era un processo manuale e laborioso, che richiedeva l'impiego di macchinari rudimentali e una grande quantità di forza lavoro. Tuttavia, con l'avvento della rivoluzione industriale, vennero sviluppate nuove tecnologie che permisero di automatizzare e ottimizzare il processo di estrazione e lavorazione della fibra. L’introduzione di macchine decorticatrici meccaniche, ad esempio, accelerò notevolmente la produzione, riducendo i costi e aumentando l'efficienza. Questo progresso tecnologico contribuì a rendere il sisal ancora più competitivo sul mercato internazionale, aprendo nuove opportunità di crescita e sviluppo.

Paese Produzione Annuale (tonnellate)
Brasile 300.000
Tanzania 250.000
Kenya 180.000
Messico 120.000

Le tabelle mostrano le principali aree di produzione del sisal. L'aumento delle tecnologie applicate alla produzione del sisal, e la conseguenza riduzione dei costi, hanno reso il materiale sempre più diffuso nell'industria.

Le Proprietà Uniche del Sisal e le Sue Applicazioni

La fibra di sisal è apprezzata per le sue eccezionali proprietà meccaniche, tra cui elevata resistenza alla trazione, rigidità e durata. Queste caratteristiche la rendono ideale per una vasta gamma di applicazioni, che vanno dalla produzione di corde e spago alla realizzazione di tessuti, tappeti e oggetti di arredamento. Inoltre, il sisal è un materiale biodegradabile e compostabile, il che lo rende un'alternativa ecologica ai materiali sintetici. La sua capacità di assorbire l'umidità lo rende anche un materiale ideale per la produzione di tappeti e rivestimenti per pavimenti, contribuendo a migliorare la qualità dell'aria interna.

Applicazioni innovative nel settore edile e automobilistico

Negli ultimi anni, il sisal ha trovato nuove applicazioni anche nel settore edile e automobilistico. Nell'edilizia, la fibra di sisal viene utilizzata come rinforzo per il cemento e l'argilla, migliorandone la resistenza e la durabilità. Nei compositi, il sisal offre un’alternativa naturale e sostenibile alle fibre sintetiche, riducendo l'impatto ambientale e migliorando le prestazioni del materiale. Nel settore automobilistico, il sisal viene impiegato per la produzione di pannelli interni, rivestimenti e componenti strutturali leggeri, contribuendo a ridurre il peso dei veicoli e a migliorare l'efficienza del carburante.

  • Resistenza alla trazione elevata
  • Biodegradabilità e compostabilità
  • Basso costo di produzione
  • Versatilità in diverse applicazioni
  • Sostenibilità ambientale

Questi punti elencano alcune delle qualità che rendono il sisal un ottimo prodotto per diversi settori industriali. L’utilizzo di materiali naturali ed ecologici è in forte ascesa, e il sisal si pone come un materiale ideale per rispondere a queste nuove esigenze.

Il Sisal nell'Artigianato Moderno: Creatività e Sostenibilità

L'artigianato moderno ha riscoperto il fascino del sisal, sfruttandone le proprietà uniche per creare oggetti originali e di design. Dalle borse e i cappelli alle sculture e i gioielli, il sisal si presta a infinite interpretazioni creative, offrendo agli artigiani un materiale versatile e sostenibile. La sua texture naturale e la sua tonalità calda conferiscono agli oggetti un aspetto rustico ed elegante, che si adatta perfettamente a diversi stili di arredamento e di moda. Inoltre, l'utilizzo del sisal nell'artigianato contribuisce a promuovere un'economia locale e a valorizzare le competenze tradizionali.

Tecniche di lavorazione innovative per l'artigianato

Gli artigiani moderni stanno sperimentando nuove tecniche di lavorazione del sisal, combinando metodi tradizionali con tecnologie innovative. L'intreccio, la tessitura, la maglia e il feltro sono solo alcune delle tecniche utilizzate per trasformare la fibra di sisal in oggetti unici e di pregio. L'utilizzo di tinture naturali e di materiali riciclati contribuisce a rendere gli oggetti ancora più sostenibili e rispettosi dell'ambiente. La collaborazione tra artigiani e designer sta dando vita a creazioni originali e innovative, che valorizzano la bellezza e la versatilità del sisal.

  1. Preparazione della fibra: pulizia e ammorbidimento
  2. Intreccio e tessitura: creazione di forme e strutture
  3. Tintura naturale: utilizzo di pigmenti vegetali
  4. Finitura e assemblaggio: rifinitura e decorazione degli oggetti

Questa è una breve guida ai passaggi principali per la realizzazione di un oggetto artigianale in sisal. La manualità e l’attenzione ai dettagli sono fondamentali per ottenere un prodotto di alta qualità.

Benefici Ambientali dell’Utilizzo del Sisal

La scelta del sisal come materiale alternativo ai prodotti sintetici offre numerosi benefici ambientali. Innanzitutto, la coltivazione del sisal richiede meno acqua e pesticidi rispetto alla coltivazione di altre fibre naturali, come il cotone. Inoltre, la pianta di agave ha una capacità di assorbimento del carbonio atmosferico superiore rispetto a molte altre piante, contribuendo a mitigare i cambiamenti climatici. La fibra di sisal è biodegradabile e compostabile, il che significa che può essere smaltita in modo ecologico, senza contribuire all'inquinamento del suolo e dell'acqua. Infine, l'utilizzo del sisal promuove un'economia circolare, riducendo la dipendenza dai combustibili fossili e dai materiali non rinnovabili.

La sostenibilità del sisal si estende all'intera filiera produttiva, dalla coltivazione alla lavorazione e alla distribuzione. L'adozione di pratiche agricole sostenibili, la riduzione del consumo di energia e l'utilizzo di imballaggi ecologici contribuiscono a minimizzare l'impatto ambientale e a garantire un futuro più sostenibile per le generazioni future.

Sisal e Innovazione: Nuove Frontiere per il Futuro

La ricerca e l'innovazione continuano a esplorare nuove possibilità per l'utilizzo del sisal. Gli scienziati stanno studiando nuove tecniche per migliorare la resistenza e la durabilità della fibra, nonché per sviluppare nuovi materiali compositi a base di sisal. L'obiettivo è quello di rendere il sisal un materiale ancora più versatile e competitivo, in grado di soddisfare le esigenze di diversi settori industriali. L’utilizzo di nanotecnologie e di biopolimeri potrebbe aprire nuove frontiere per l'applicazione del sisal in settori avanzati, come l'aerospaziale e la biomedicina.

Un esempio concreto di innovazione è l'utilizzo del sisal per la produzione di bioplastiche. Combinando la fibra di sisal con materiali polimerici di origine biologica, è possibile ottenere materiali plastici biodegradabili e compostabili, che rappresentano una valida alternativa alle plastiche tradizionali derivate dal petrolio. Questa tecnologia potrebbe avere un impatto significativo sulla riduzione dell'inquinamento da plastica e sulla promozione di un'economia più sostenibile.

Uncategorized