Xdanger Δημοσ. 9 Μαρτίου 2012 Δημοσ. 9 Μαρτίου 2012 (επεξεργασμένο) Έχω βάλει μέσω cron job να τρέχει ένα php script ωστε να ενημερώνει την βάση δεδομένων με δεδομένα από ένα αρχείο xml και ενώ δούλευε καλά για 3 ευδομάδες περίπου τις τελευταίες 3 μέρες έχει σταματησει να τρέχει. Τρέχοντας το script μέσω ssh μου βγάζει το μήνυμα segmentation fault. Γνωρίζει κανείς γιατί μπορεί να το κάνει αυτό? init.php > <?php set_time_limit(600); ini_set('memory_limit', '96M'); //log errors set_error_handler('err_handle',E_ALL); $errors = ''; function err_handle($code,$string,$file,$line,$context) { $errors .= $string.PHP_EOL; } defined('APPLICATION_PATH') || define('APPLICATION_PATH', realpath(dirname(__FILE__) . '/../application')); // Define application environment defined('APPLICATION_ENV') || define('APPLICATION_ENV', (getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV') : 'development')); set_include_path(implode(PATH_SEPARATOR, array( realpath(APPLICATION_PATH . '/../library'), get_include_path(), ))); /** Zend_Application */ require_once 'Zend/Application.php'; $application = new Zend_Application( APPLICATION_ENV, APPLICATION_PATH . '/configs/application.ini' ); $options = $application->getOptions(); $application->bootstrap(); ?> read.php > <?php require_once 'init.php'; $started = Zend_Date::now(); $log = 'started: '.$started->toString('dd/MM/YYYY H:m:s').PHP_EOL; $xmlOptions = $options['xml']; $mapper = new Application_Model_Mapper(); $striper = new Zend_Filter_StripTags(); $count = 0; try { $client = new Zend_Http_Client($xmlOptions['url']); $client->setConfig(array('timeout' => 60)); $request = $client->request(); if ($request->getStatus() != 404) { file_put_contents('downloaded.xml', $request->getBody()); $items = simplexml_load_file('downloaded.xml','SimpleXMLElement',LIBXML_NOCDATA); foreach ($items as $xml) { if (!$mapper->exist($xml->{$xmlOptions['id']},$xml->{$xmlOptions['store']})) { $endDate = new Zend_Date($xml->{$xmlOptions['until']}); $diff = Zend_Date::now()->compare($endDate); if ($diff == -1) { $item =new Application_Model_Item(); $url = $xml->{$xmlOptions['image']}; $url_length = strlen($url); $image_url = 'images/items/'.$xml->{$xmlOptions['id']}.'_'.$xml->{$xmlOptions['store']}. substr($xml->{$xmlOptions['image']},$url_length-4, 4) ; if (file_get_contents($url)) file_put_contents('../'.$xmlOptions['public'].'/'.$image_url,file_get_contents($url)); $item->xml_id = $xml->{$xmlOptions['id']}; $item->title = $xml->{$xmlOptions['title']}; $item->description = $striper->filter($xml->{$xmlOptions['description']}); $item->link = $xml->{$xmlOptions['link']}; $item->image = $image_url; $mapper->addItem($item); $count++; } } } } $log .= "added: $count items".PHP_EOL; $log .= 'removed: '.$mapper->removeExpiredItems().' items'.PHP_EOL; }catch (Exception $ex){$log .= PHP_EOL.'ERROR: '.$ex->getLine().':'.$ex->getMessage().PHP_EOL;} $end = Zend_Date::now(); $log .= 'ended: '.$end->toString('dd/MM/YYYY H:m:s').PHP_EOL; $elapsed = $end->sub($started); $log .= 'elapsed: '.$elapsed->toString('m:s').PHP_EOL; $log .= 'Errors'.PHP_EOL.$errors; echo PHP_EOL.PHP_EOL.PHP_EOL.$log; $h = Zend_Date::now()->toString('dd_MM H_m_s'); file_put_contents('logs/xml '.$h.'.log', $log); ?> Επεξ/σία 9 Μαρτίου 2012 από Xdanger
Xdanger Δημοσ. 9 Μαρτίου 2012 Μέλος Δημοσ. 9 Μαρτίου 2012 Το hosting είναι στο godaddy λέει πως η βάση είναι έως 1gb, η δική μου βάση είχε φτάσει 9,5mb, διέγραψα τα δεδομένα και τότε άρχισε να τρέχει πάλι κανονικά το script μέσω cli για λίγη ώρα και μετά μου έβγαλε το μύνημα terminated. Τώρα η βάση μόλις φτάσει τα 1,7mb (610 items) ξαναπετάει segmentation fault, αν διεγράψω μερικά items αρχίζει και προσθέτει μέχρι να φτάσει τα 610 και μετά ξαναπετάει segmentation fault. Αν τα διαγράψω όλα κάθε 300 items περίπου μου πετάει terminated. Λογικά έχει να κάνει με τα resources, επειδή τις πρώτες 3 ευδομάδες έπεζε κανονικά υπάρχει περίπτωση να μου μειώσαν τα όρια στην πορεία ή μπορεί να οφείλετε αλλού το πρόβλημα?
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα