You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Porter is the PHP data importer. She fetches data from anywhere, from the local file system to third party online services, and returns an [iterator](#record-collections). The iterator represents a single data record or repeating series of records, with or without additional metadata. Porter is a fully pluggable import framework that can be extended with [connectors](#connectors) for any protocol and [transformers](#transformers) to manipulate data.
14
+
Porter is the PHP data importer. She fetches data from anywhere, from the local file system to third party online services, and returns an [iterator](#record-collections). Porter is a fully pluggable import framework that can be extended with [connectors](#connectors) for any protocol and [transformers](#transformers) to manipulate data immediately after import.
15
15
16
-
Ready-to-use data [providers][Provider]are just a `composer require` away, and will include all the necessary connectors and other dependencies to access popular online services such as [Stripe][Stripe provider] for online payments or [foreign exchange rates][ECB provider]. Truthfully, Porter's open source provider library is very limited right now, and some implementations are incomplete, but we hope the PHP community will rally around Porter's abstractions to become the de facto framework for publishing PHP APIs because her interfaces have undergone intensive scrutiny and several iterations during years of production use to ensure they are efficient, robust, flexible, testable and easy to implement.
16
+
Ready-to-use data [providers][Provider] include all the necessary connectors and other dependencies to access popular online services such as [Stripe][Stripe provider] for online payments, the [European Central Bank][ECB provider] for foreign exchange rates or [Steam][Steam provider] for its complete PC games library and more. Porter's provider library is limited right now, and some implementations are incomplete, but we hope the PHP community will rally around Porter's abstractions and become the de facto framework for publishing online services, APIs, web scrapers and data dumps. Porter's interfaces have undergone intensive scrutiny and several iterations during years of production use to ensure they are efficient, robust, flexible, testable and easy to implement.
17
17
18
-
Porter's key [durability](#durability) feature ensures failed connections are transparently retried up to five times by default, with increasing delays between each attempt until the fetch is successful, provided the failure type is marked as recoverable. The retry mechanism is safe for concurrent requests because objects are cloned internally, and this technique is used throughout Porter wherever necessary to ensure immutability and predicable behaviour, reducing the chance of bugs and other unpleasant surprises in your code regarding concurrency.
18
+
Porter's key [durability](#durability) feature ensures recoverable connection failures are transparently retried up to five times by default, with increasing delays between each attempt until the fetch is successful. This helps ensure intermittent network failures will not disrupt the entire import operation. Special care has been taken to ensure Porter's features are safe for concurrency, such that multiple imports can be paused and resumed simultaneously, which is especially important for iterators implemented with generators (which can be paused) as well as the upcoming asynchronous imports in v5.
19
19
20
20
Contents
21
21
--------
@@ -592,6 +592,7 @@ Porter is published under the open source GNU Lesser General Public License v3.0
0 commit comments