怎么样解决 woocommerce 中图片导入超时

在用 woocommerce 批量导入图片时,因为导入的商品多时,会导致图片导入失败,我在图片导入失败时,加了一个下载的 retry,图片导入失败的次数大大减少,但是这只是一个减少,并不能完全杜绝,但是这个方法是成本最轻的,其它的方法我会持续尝试。

我在上一个文章关于woocommerce 导入逻辑有详细的介绍,我在这个代码里加了一个 retry 的逻辑,代码如下

     // Upload if attachment does not exists.
                if ( ! $id && stristr( $url, '://' ) ) {
                        $attempt = 1;
                        $retry_interval = 1; // Initial retry interval in seconds.

                        while ($attempt <= 3) {
                                $upload = wc_rest_upload_image_from_url( $url );

                                if ( ! is_wp_error( $upload ) ) {
                                        $id = wc_rest_set_uploaded_image_as_attachment( $upload, $product_id );

                                        if ( ! wp_attachment_is_image( $id ) ) {
                                                /* translators: %s: image URL */
                                                throw new Exception( sprintf( __( 'Not able to attach "%s".', 'woocommerce' ), $url ), 400 );
                                        }

                                        // Save attachment source for future reference.
                                        update_post_meta( $id, '_wc_attachment_source', $url );
                                        break;
                                } else {
                                        if ($attempt === 3) {
                                                throw new Exception( $upload->get_error_message(), 400 );
                                        }
                                        sleep($retry_interval);
                                        $retry_interval *= 2; // Exponential backoff strategy.
                                        $attempt++;
                                }
                        }
                }

发表评论