Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/229.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php StripeAPI列出发票的速度非常慢_Php_Laravel_Stripe Payments_Stripe Connect - Fatal编程技术网

Php StripeAPI列出发票的速度非常慢

Php StripeAPI列出发票的速度非常慢,php,laravel,stripe-payments,stripe-connect,Php,Laravel,Stripe Payments,Stripe Connect,我正在构建StripeSaas,它检索注册用户的所有发票并进行一些统计 我的服务器位于Godaddy共享服务器上,具有512mb ram,页面加载时间可能需要20秒,这对性能来说太糟糕了。如果用户有50个磁盘,则此情况下 我正在使用带条带包的Laravel5.4框架 这是我在控制器中的代码 \Stripe\Stripe::setApiKey($secret_key); $invoices= \Stripe\Invoice::all(array("limit" => 10

我正在构建StripeSaas,它检索注册用户的所有发票并进行一些统计

我的服务器位于Godaddy共享服务器上,具有512mb ram,页面加载时间可能需要20秒,这对性能来说太糟糕了。如果用户有50个磁盘,则此情况下

我正在使用带条带包的Laravel5.4框架

这是我在控制器中的代码

    \Stripe\Stripe::setApiKey($secret_key);

    $invoices=  \Stripe\Invoice::all(array("limit" => 100));
我的观点是

 @foreach($invoices->autoPagingIterator() as $invoice)
                                <tr>

                                <td>invoice.created</td>
                                    <td> {{$invoice->id}}</td>
                                    <td>{{$invoice->amount_due}}</td>
                                    <td> {{$invoice->attempt_count}}</td>
                                    <td> {{$invoice->livemode}}</td>
                                    <td> {{$invoice->charge}}</td>
                                    <td> {{$invoice->currency}}</td>
                                    <td> {{$invoice->customer}}</td>
                                    <td> {{$invoice->date}}</td>
                                    <td> {{$invoice->description}}</td>
                                    <td> {{$invoice->discount}}</td>
                                    <td> {{$invoice->ending_balance}}</td>
                                    <td> {{$invoice->period_end}}</td>
                                    <td> {{$invoice->period_start}}</td>
                                    <td> {{$invoice->subscription}}</td>
                                    <td> {{$invoice->paid}}</td>


                                </tr>
                                @endforeach
@foreach($invoices->autoPagingIterator()作为$invoices)
发票已创建
{{$invoice->id}
{{$invoice->到期金额}
{{$invoice->尝试计数}
{{$invoice->livemode}
{{$invoice->charge}
{{$invoice->currency}
{{$invoice->customer}
{{$invoice->date}
{{$invoice->description}
{{$发票->折扣}
{{$invoice->期末余额}
{{$invoice->period_end}
{{$invoice->period_start}
{{$invoice->subscription}
{{$invoice->paid}
@endforeach
其逻辑是秘密密钥存储在数据库中,每个用户都有自己的密钥
我想知道,这是在不重载的情况下实现SaaS的最佳实践。Stripe内置了速率限制,以防止您一次提取太多数据

我们最近为我们的客户建立了一个系统(我们使用Stripe Connect作为客户和企业之间的“中间人”,收取费用),这需要我们显示以前的发票。我们想出的唯一真正的方法是同步数据并保留本地副本

这花了一周的时间来运行我们所有的旧数据,但现在运行在运行中,可排队事件在创建条带数据时处理拉条带数据

我的建议是设置一个队列,将所有发票数据拉到您自己的数据库中,然后您可以在那里格式化和显示,而不会出现明显的加载延迟。将其与查询缓存和索引相结合,您应该能够以较低的服务器开销进行非常快速的设置


作为旁注,我还建议您寻找一个比共享托管更好的托管选项,因为在这样一个有限的环境中,您在尝试执行队列和日程安排等操作时会遇到很多问题。一个简单的DigitalOcean或Linode box与Laravel Forge相结合,从长远来看,使Laravel特定的部署和管理更加容易。

与@Rick一样,我也做了类似的工作。我没有对Stripe进行任何轮询,而是镜像了它们的数据模型并将所有内容存储在本地。当你的应用程序增长时,速率限制会变得非常有问题。嗨,petter adam,如果下面的这个或任何答案都解决了你的问题,请点击检查标记来考虑。这向更广泛的社区表明,你已经找到了一个解决方案,并给回答者和你自己带来了一些声誉。没有义务这样做,但这样做通常是良好的做法。