php - 如何在每次执行时清除内存?
问题描述
我有这样的事情:
<?php
ini_set('max_execution_time', 0);
ini_set('memory_limit', '1024M');
//require_once '../../tabkadeh/error_reporting.php';
function setName($name,$photoName, $new_file)
{
var_dump($new_file);
require_once 'files/lib/WideImage.php';
require_once 'FarsiGD.php';
$left = '+50';
$top = '+400';
$bg = WideImage::load($photoName);
//$final= $bg ->resize(400, 400);
$final= $bg;
$canvas = $final ->getCanvas();
//$canvas->useFont('./Yekan.ttf', 200, $final->allocateColor(000, 000, 000));
$new_name=(new FarsiGD)->persianText($name,'fa', 'normal');
$canvas->useFont('./Ray-ExtraBlack.ttf', 40, $final->allocateColor(34, 84, 109));
$canvas->writeText("left $left", "top $top",$new_name);
$final->saveToFile($new_file);
}
$file = fopen("Main.txt", "r");
$i = 0;
$line_of_text = '';
while (!feof($file)) {
$line_of_text .= fgets($file);
}
$myText = explode("\n", $line_of_text);
fclose($file);
$arrayCount = count($myText);
var_dump($myText);
for ($x = 0; $x < $arrayCount; $x++) {
setName($myText[$x], './bgbg.jpg', './export/flower_stamp-'.$x.'.jpg');
}
此文件:Main.txt
包含大量数据(2000 行产品名称)。
我增加了内存限制;但是当我运行脚本时,这只适用于第 1 行到第 250 行或更少!
如何清理每一代照片的内存?
解决方案
从文件中加载一行并处理它。然后加载下一个!不要将所有内容加载到大字符串中,然后将其制作成一个数组,然后处理数组的每次出现。
一旦你这样做了,你可能不需要增加内存限制或执行时间。
<?php
ini_set('max_execution_time', 0);
ini_set('memory_limit', '1024M');
//require_once '../../tabkadeh/error_reporting.php';
function setName($name,$photoName, $new_file)
{
//var_dump($new_file);
require_once 'files/lib/WideImage.php';
require_once 'FarsiGD.php';
$left = '+50';
$top = '+400';
$bg = WideImage::load($photoName);
//$final= $bg ->resize(400, 400);
$final= $bg;
$canvas = $final->getCanvas();
//$canvas->useFont('./Yekan.ttf', 200, $final->allocateColor(000, 000, 000));
$new_name = (new FarsiGD)->persianText($name,'fa', 'normal');
$canvas->useFont('./Ray-ExtraBlack.ttf', 40, $final->allocateColor(34, 84, 109));
$canvas->writeText("left $left", "top $top",$new_name);
$final->saveToFile($new_file);
}
$file = fopen("Main.txt", "r");
$i = 0;
$line_of_text = '';
while ($line = fgets($file, 4096) !== false) {
setName(trim($line), './bgbg.jpg', './export/flower_stamp-'.$i.'.jpg');
$i++;
}
fclose($file);
推荐阅读
- python - 如何在 Google Colab 中使用 Pandas 的“sep”命令?
- javascript - ExpressJS - 重复键错误集合
- operating-system - 操作系统如何调用bios函数?
- keras - Tensorflow Serving 在预训练的 Keras ResNet50 模型上返回始终相同的预测
- android - unity2d 缩放画布以适应
- d3.js - deck.gl 过渡和过滤
- c - C 代码。为什么我的代码没有在 main 中返回正确的值,而是使用函数打印正确的值?
- bash - 奇怪的问题读取带有空格的文件(Shell 脚本)
- gps - 有没有办法将数据从时间标记 2 传输到 ucenter 的文本控制台?上升沿或下降沿值。
- dart - 在内存中持久化 Flutter 小部件