Sobre Exportar a Excel

Hola a todos y agradeciendo sus sinceras recomendaciones que me puedan brindar.

Mi problema es el siguiente:

Estoy exportando a excel un reporte, el cual el fichero a llenar tiene dos hojas con formulas, en la cuales se actualizan de los datos exportados, cuando halo el reporte desde mi Computadora (procesador Core i3 con 4 GB de memoria RAM) donde hice el sistema me sale bien, o sea se llena sin problema y se actualizan las celdas con fórmulas.

pero cuando pongo el sistema en la computadora donde trabaja este (procesador pentium 3 con 512 de RAM, o sea mucho menos que la mía y mando a exportar el fichero, se demora y al abrirlo me dice que el fichero abierto tiene otro formato, cuando lo abro me dice que por tiempo de espera 30 segundos y me remite a varios ficheros de la carpeta clases del PHPExcel, donde da los errores, aunque creo que es lo mismo, en una ocasión me remitió al fichero \extensions\phpexcel\Classes\PHPExcel\Writer\Excel5\Parser. También me remite a otro fichero de esta carpeta \extensions\phpexcel\Classes\PHPExcel\Calculation y así me remite a varios ficheros pero siempre con el mismo error tiempo de ejecución 30 segundos

O sea parece que por tiempo no lo abrió correctamente.

¿Qué puedo hacer en este caso?

Hola, espero estes bien, a tu pregunta, no se si tenga algo que ver eso del tiempo de ejecución de acuerdo al procesador de tu computadora, pero eso es parte del PHP, te explico.

Hay un archivo PHP.ini, en el cuál tiene varias definiciones propias de PHP, inclusive en algunos casos indica el tipo de conexiones con que se puede conectar, en esa parte lo comentan con ; entonces tu problema es la palabra reservada MAX_EXECUTE_TIME, no tiene nada que ver yii, ni si usas WAMP o XAMPP, o cualquier otro, el problema es la configuración en esa instrucción, si te fijas tendrá un tiempo reservado, osea un maximo tiempo de ejecución de tu petición dentro de PHP, la puedes cambiar a mas segundos y problema resuelto…, pero oh otro problema en caso que no lo veas, no solo es cambiar el tiempo máximo de ejecución, sino también el tamaño máximo de memoria a usar, que es la palabra MEMORY_LIMIT, tienes que modificar esas dos, cuando optienes miles de datos o millones usabas X cantidad de memoria en CACHE y si sobre pasa la configuración, marcara error tu PHP, a veces es por eso que el tiempo de ejecución te truena porque en lo que carga la memoria, se fija que es mas cantidad y dice PHP que se agoto el tiempo de ejecución, si no quieres modificar el tiempo maximo de ejecución en el archivo ini, puedes usar esta linea:




ini_set('max_execution_time', 300);



dentro del archivo o controlador donde la vas a mandar llamar claro, y ya te incrementa a mas segundos que tu le digas el tiempo de ejecución, pero solo en esa parte donde la mandas llamar y listo.

Yo tuve ese problema pero con mas de 15 mil datos, en PHPEXCEL, desde ahi empieza a agotarse el tiempo, inclusive codifique para que saliera en varios exceles de diferentes pedazos, para no sobre cargar y tronara, y el problema siempre fue el limite de memoria, sigue haciendo lo que te explique arriba con el cache, SOLUCION!!!, no MUY VIABLE!!!, incrementarlo…, estuve buscando varias veces esa info y codificaciones diferentes, el problema es que imaginate que tengas 20 usuarios, y esos 20 entren a tu mismo módulo, y saquen excel a como gusten ellos, el problema es que si son muchos MB y aunque incrementes memoria, o tiempo de ejecución, te estan consumiendo mucho RECURSO DE TU SERVIDOR…, ahora imagina cientos de usuarios.

SI ENCUENTRAS UNA SOLUCIÓN RESOLVIENDO ESO QUE TE COMENTO, TE AGRADECERIA TU AYUDA Y EXPLICACION. A lo que preguntas es la solución no muy buena claro pero sirve… Saludos

Gracias [size=2]shaolin[/size][size=2] por responder, hice las dos cosas, primero modifique esta linea en mi php.ini[/size]

max_execution_time = 300 de la 30 que tenia la lleve a 300 y esta otra:

memory_limit = 256M de 128 que tenia la lleve a 256, ademas le puse la linea al controlador donde lo llamo aquí:





public function actionreporterc20()

	{    

    	spl_autoload_unregister(array('YiiBase','autoload'));

            require(Yii::app()->basePath.'/extensions/phpexcel/Classes/PHPExcel.php');

            spl_autoload_register(array('YiiBase', 'autoload'));

            

            $objPHPExcel = PHPExcel_IOFactory::load("RC20.xls");	

          

            $objPHPExcel->setActiveSheetIndex(0)			

                     ->setCellValue('A5');  

           ini_set('max_execution_time', 300); // puse esta linea en este trozo de codigo

           $model=$this->loadModel(); 

       	   $desde = date('Y-m-d',strtotime($_POST['fechainicio']));

           $hasta = date('Y-m-d',strtotime($_POST['fechafin']));

           $codUEB = $_POST['entidad']; 

	   $Ent = "asad";

   .....



Veremos si con esto resuelvo. Gracias