Разработанный сайт исправно работает без ошибок на локальном сервере. Однако на хостинге возникают проблемы. Сам сайт выполняет следующие процедуры: при помощи формы загружается экселевский файл, в котором данные. Эти данные сохраняются и записываются в текстовый файл на сервере. Происходит перенаправление обратно на сайт и происходит чтение того текстового файла с последующим удалением и инжектирование полученных данных в html
документ в массив javascript
, который в дальнейшем передаёт этот массив в скрипт, который проводит дальнейшие манипуляции с этими данными.
Проблема же в том, что при загрузке относительно больших файлов файлов, порядка 50 КБ (малые порядка 20 КБ) и перенаправлении, в массив записываются данные и в конце концов закрываются все теги и не объявляется оставшийся дивы. Проверяя работу на локальном сервере, там отображается всё при любом раскладе.А самое странное, что это происходит не каждый раз. Т.е. иногда 3 раза подряд я могу использовать функцию, а иногда по 10 раз не работает на больших файлах. С малыми файлами такой проблемы нет.
Во-первых прошу впринципе помочь с данной проблемой.В чём тут могут быть проблемы? Во-вторых есть вопросы, связанные с тем, есть ли ограничения, которые могли бы этому поспособствовать на хостинге.
PHP параметры выставил уже так:
php_value max_execution_time 0
php_value max_input_time 500
php_value upload_max_filesize 30M
php_value post_max_size 30M
php_value default_charset utf-8
Но от этих параметров ничего не изменилось. Возможно камнем преткновения является мой способ передачи массива строк из php в javascript со стороны container.php:
echo "<script> var massive=\"\"; \r\n ";
for($i=0;$i<strlen($res);$i=$step+1) // пробегаю по полученным данным и
// разбиваю их на строки, т.к. у html видимо есть ограничения по длине, и
//если слишком длинные строки будут, то их будет не удобно передать в массив
//javascript.
{
if($i+500<strlen($res))
{
if (strpos($res,'|',$i+500) !== false)
{
$step=strpos($res,'|',$i+500);
}
else
break;
}
else
{
if (strpos($res,'|',$i) !== false)
{
$step=strpos($res,'|',$i);
}
}
echo "massive+='".$str."';\r\n";
echo "</script> ";
echo "<script>\r\n ";
echo "var a=0;";
echo "</script> \r\n ";
со стороны javascript на html странице:
<?php include 'container.php';
?>
<script src="plot.js" type="text/javascript"> // вызов функции, работающей с
//массивом
</script>
<div ......> </div>
В итоге в моменты, когда не срабатывает массив передаётся не весь, а plot.js и div не срабатывают совсем. При этом все теги закрываются и ошибок не выдаёт.
Всё, проблему решил. Передача через html код была крайне неудачной. Реализовал всё при помощи get запроса и всё прекрасно работает. Javascript выполняет get запрос на файл php, который в свою очередь читает строку и возвращает её javascript.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Как убрать автоматическую очистку полей в php? Те когда пользователь заполняет поля, и нажимает на кнопку, то поля очищаются
Убрать Jquery из yii2Дело в том что скрипты самого yii задействуют jquery, и хочется просто вырезать jq из сайта вообще
Есть ссылка, "Личный кабинет"При нажатии на неё нас кидает к форме авторизации
Подскажите пожалуйста, как через send() передать значение шага в цикл, с которым он будет выводить значения