GDLib, запись на диск. Проблема.

silvek

Новичок
GDLib, запись на диск. Проблема.

Привет!

У меня возникла проблема.
(Замечу, на моей локальной машине все было хорошо - проблема на хостинге проявилась).

У меня есть задача динамически формировать последовательность маленьких(буквально 500-700 байт) изображений и сохранять их тут же в папку(возможно при этои перезаписывая существующие файлы).

Для сохранения использую функцию imagejpeg().

Таким образом прототип кода:

PHP:
for($i=0;$i<MAX;$i++)
{
            imagejpeg($pic,"imgs/".$dynamic_name.".jpg");
            //$pic - корректно созданный дескриптор картинки
};
На хсотинге проявилась следующая проблема - некоторые картинки(при некоторыхз $i в прототипе) не записались, т.е. как бы проскочили.

Пытался ставить sleep(1) после каждой записи - не помогло.
Пытался делать
while(!imagejpeg()) {}; - не помогло...

Права на папку стоят 777, запись иногда проходит.

В чем может быть проблема?
Заранее спасибо за любую информацию.

-~{}~ 12.02.08 02:02:

Как временное решение сделал запись постоянно в новый файл. Тогда работает.
Т.е. не хочет перезаписывать файлы. Но права выставлял 777, в чем проблема я не понимаю.
 

Ноябрь

Новичок
Проверте права на папку в который лежит скрипт, права на папку imgs..., вообще, если хостинг платный, то можно требовать решения проблемы:).
Тестируйте, меняйте параметры (к примеру сохраните одну картинку), смотрите переменные.
в написанном коде все нормально:)
 

silvek

Новичок
"можно требовать решения проблемы" - с них потребуешь. Хостинг выбирал самый дешевый, на тот момент денег вообще не было. Они вообще не отвечают мне!

Буду копать =)
 

Сергей Тарасов

Профессор
for($i=0;$i<MAX;$i++)
{
imagejpeg($pic,"imgs/".$dynamic_name.".jpg");
//$pic - корректно созданный дескриптор картинки
};

1) Все время в один и тот же файл пишем?
2) ; после for {} нужно убрать
 

silvek

Новичок
Андрейка, везде.
Сергей Тарасов, это псевдокод, он просто отражает суть скрипта.
 

StUV

Rotaredom
это псевдокод, он просто отражает суть скрипта
суть может работать, а может и нет
сделай из своего _неработающего_ скрипта упрощенную копию - на 10 строк
проверь - если он заработает - значит проблема в другом, если нет - запости его сюда
 

silvek

Новичок
Вот код, у меня на машине все работает, на хостинге нет. На хостинге сидит прикольный дяд 50 лет и прикалывается надо мной - не надо было на этот хостинг регаться.

Код:
$top_point=0;			


for($i=($top-1);$i<$bottom;$i++)
{
$left_point = 0;
	for($j=($left-1);$j<$right;$j++)
	{
		foreach($cells as $k1=>$v1)
		{
			if($v1['row']==($i+1)&&$v1['col']==($j+1)) 
			{
				if(intval(imagecopyresized($pic,$img,0,0,$left_point,$top_point,10,10,10,10)))
				{
					$v1['col']=($v1['col']-1); 
					$v1['row']=($v1['row']-1); 
					$filename = "";
					
					for($cn=0;$cn<rand(10,20);$cn++) $filename .= rand(0,9);
					
					if($info[2]==1) 
					{
						imagegif($pic,"imgs/pics/".$filename.".gif"); //вот здесь запись если gif
						$kern->query("update cells set pic_id='imgs/pics/".$filename.".gif' where row='".$v1['row']."' and col='".$v1['col']."'");
					}	
					else 
					{
						imagejpeg($pic,"imgs/pics/".$filename.".jpg"); //вот здесь запись если jpg
						$kern->query("update cells set pic_id='imgs/pics/".$filename.".jpg' where row='".$v1['row']."' and col='".$v1['col']."'");
					};
			};
		};
$left_point+=10;
};
$top_point+=10;			
};
 

silvek

Новичок
Мне кажется это чтото из области операционной системы вообще и файловой системы в частности.
 

StUV

Rotaredom
Вот код, у меня на машине все работает, на хостинге нет.
убери из своего кода все лишнее
сделай отдельно скрипт, который занимается только созданием картинок
без всяких
$v1['col']=($v1['col']-1);
$v1['row']=($v1['row']-1);
...надеюсь ты понимаешь, что баг не в этом коде?..
 
Сверху