我有此php代码,用于备份图片/优化图片并重新上传图片以进行购物 它可以工作,但是在超时之前只对一些图像起作用,因为其中有很多图像,每个图像都经过多个处理。
有500多个图像。我能在没有脚本超时的情况下处理所有这些图像吗?
这是代码
<?php
//ini_set("display_errors", 1);
//error_reporting(E_ALL);
ini_set('memory_limit', '-1');
require_once("inc/functions.php");
require_once("lib/Tinify/Exception.php");
require_once("lib/Tinify/ResultMeta.php");
require_once("lib/Tinify/Result.php");
require_once("lib/Tinify/Source.php");
require_once("lib/Tinify/Client.php");
require_once("lib/Tinify.php");
\Tinify\setKey("xxxxxxxxx");
$requests = $_GET;
//$hmac = $_GET['hmac'];
$serializeArray = serialize($requests);
$requests = array_diff_key($requests, array('hmac' => ''));
ksort($requests);
$token = "xxxxxx";
$shop = "xxxxx"; //no 'myshopify.com' or 'https'
$storeURL = "https://" . $shop . ".myshopify.com";
$path = realpath("images");
if ( ! is_dir($path)) {
mkdir('images', 0777);
}
$i = 1;
do {
if ($i == 1) {
$date = '2040-01-01T12:00:00-00:00';
}
$array = array('limit' => '250', 'order' => 'created_at desc', 'created_at_max' => $date);
$products = shopify_call($token, $shop, '/admin/api/2020-01/products.json', $array, 'GET');
$products = json_decode($products['response'], JSON_PRETTY_PRINT);
$i++;
foreach ($products['products'] as $product) {
$date = $product['created_at'];
foreach ($product['images'] as $image) {
$image_id = $image['id'];
$image_tag = $image['alt'];
$image_position = $image['position'];
/* Process 1: download and save image (Backup) */
$path = realpath('images/' . $product['id']);
if ( ! is_dir($path)) {
mkdir('images/' . $product['id'], 0777);
}
$fileurl = $image['src'];
$fileName = basename($image['src']);
$names = explode('?v=', $fileName);
file_put_contents('images/' . $product['id'] . '/' . $names[0], file_get_contents($image['src']));
/* End Process 1 */
/* Process 2: Optimise and save optimised Image */
$source = \Tinify\fromUrl($fileurl);
$path = realpath('images/' . $product['id'] .'/optimized');
if ( ! is_dir($path)) {
mkdir('images/' . $product['id'] .'/optimized', 0777);
}
$source->toFile("images/" . $product['id'] . "/optimized/". $names[0]);
/* End Process 2 */
$image = array(
"image" => array(
"id" => $image_id,
)
);
/* Process 3: Delete image from shopify */
$delete_image = shopify_call($token, $shop, "/admin/products/" . $product['id'] . "/images/".$image_id .".json", $image, 'DELETE');
$deleted = $delete_image['response'];
/* End Process 3 */
/* Process 4: Upload Optimised image to shopify */
$imgurl = "http://xxxx/vendor/images/" . $product['id'] . "/optimized/". $names[0];
$upload_image = array(
"image" => array(
"position"=>$image_position,
"alt"=> $image_tag,
"src"=> $imgurl
)
);
$upimage = shopify_call($token, $shop, "/admin/products/" . $product['id']. "/images.json", $upload_image, 'POST');
$uploaded = $upimage['response'];
/* End Process 4 */
}
}
} while (count($products['products']) == 250);
任何建议都将受到高度赞赏。谢谢