Странно выполняется скрипт.

vladlen

Новичок
Странно выполняется скрипт.

Есть скриптик выводящий ряд изображений

show_gr_v2 ($_SESSION['tgrp'], $period, "d3", "d5");
show_gr_v2 ($_SESSION['tgrp'], $period, "d43")
...
и т.д

Наблюдается странная штука. Если вызывается не более 17 изображений, всё ок. Если более, броузер уходит в бесконечную загрузку, но при остановке выводит часть изображений. В error.log apache ничего не кидается.

Вылечилось при указании в функции всего набора аргументов.

show_gr_v2 ($_SESSION['tgrp'], $period, "d3", "d5", "");
show_gr_v2 ($_SESSION['tgrp'], $period, "d43", "", "")
...
и т.д

Это нормально? Что есть правильно, описывать все аргументы функции, или только используемые? И что значит "PHP поддерживает неопределённое число аргументов в функции".
 

crocodile2u

http://vbolshov.org.ru
http://phpfaq.ru/debug

В функции можно задать значение аргумента по умолчанию
PHP:
function test($arg = "Hello world!") {
    echo $arg;
}
test() выведет "Hello world!"

test("Hello everybody") выведет "Hello everybody"
 

Tor

Новичок
моя супер функция bla-bla-bla так работает
bla-bla-bla(1)

а так нет
bla-bla-bla(2)

что делать?
 

vladlen

Новичок
crocodile2u

Сделал тестик для этой ситуации, результат тотже.

1.php
PHP:
<?php
for ($i=0; $i<35; $i++){
	show ($i);
}

function show ($i, $ii){
		
echo '<table><tr><td><img src="2.php?i='.$i.'"></td></tr></table>';			
}
?>

2.php
PHP:
<?php
$image = imagecreatetruecolor(900,20)  or die('Cannot create image'); 
imagefill($image, 0, 0, 0x005580); 
imagestring ($image, 2, 400, 5, $_GET['i'], 0xFFFF00);
header("Cache-Control: no-cache, must-revalidate");
header("Pragma: no-cache");
header("Content-type: image/png");
imagepng($image); 
imagedestroy($image);
exit();
?>
Если с тавить $i больше 34, скрипт непонятно выполняется. Может я где то ошибся в коде?. Кстати PHP 4.3.4
 

Tor

Новичок
у меня и на нескольких сотнях поведение не отличается от 34
Apache/1.3.31 (Unix) PHP/4.3.7 rus/PL30.20
 

vladlen

Новичок
Поставил 4.3.10, не помогло. Apache 1.3.29, win2000 sp4. Только у меня получается такой глюк? Может ещё кто поможет, запустит скриптик на своей машинке, скажет что вышло?
 

SiMM

Новичок
> Сделал тестик для этой ситуации
Что-то я не вижу там сессий, которые были в изначальном вопросе. Вообще непонятно при чём там был какой-то мифический show_gr_v2 и какая у него связь с приведённым в дальнейшем тестом.
И вообще, поскольку автор не в состоянии описать проблему - пальцем в небо - [m]session_write_close[/m]
 

vladlen

Новичок
Проблема следующая.

Тестовый скриптик выполняется правильно, если 1.php.

PHP:
<?php 
for ($i=0; $i<20; $i++){// при значении 35 уже проблемы
    show ($i); 
} 

function show ($i, $ii){ 
         
echo '<table><tr><td><img src="2.php?i='.$i.'"></td></tr></table>';
          
} 
?>
или

PHP:
<?php 
for ($i=0; $i<500; $i++){
    show ($i, ""); // описанны оба аргумента функции
} 

function show ($i, $ii){
         
echo '<table><tr><td><img src="2.php?i='.$i.'"></td></tr></table>';
          
} 
?>
Выполняется непонятно (броузер уходит в бесконечную загрузку, но при остановке выводит часть изображений), если 1.php

PHP:
<?php 
for ($i=0; $i<500; $i++){
    show ($i); 
} 

function show ($i, $ii){
         
echo '<table><tr><td><img src="2.php?i='.$i.'"></td></tr></table>';
          
} 
?>
При этом у Tor все три варианта работают одинаково хорошо. Хотелось бы разобраться, почему так.
 

Tor

Новичок
во-первых, читай правила, столько кода никто читать не собирается
во-вторых, раз у меня работает, а у тебя - нет, значит дело не в скрипте
 

vladlen

Новичок
Запустил на другой машине, всё работет нормально. Спасибо всем за помощь.
 

crocodile2u

http://vbolshov.org.ru
А разобраться, в чем дело, ты не хочешь?
Ведь снова и снова будет один и тот вопрос возникать.
 
Сверху