انجمنهای فارسی اوبونتو
کمک و پشتیبانی => برنامهسازی => نویسنده: rahmani در 20 امرداد 1392، 10:18 بظ
-
سلام
یک برنامه php دارم که اطلاعات چندتا file با قالب html را پردازش میکند. برای نمونه یک file کوچک ( در حد کیلو بایت) را امتحان کردم. درست کار میکند اما فایلهای اصلی با همان format که حجمشان حدود ۲ تا ۳ مگا بایت هست را پردازش نمی کند.
از آنجا که حجم اصلی file های اصلی خیلی زیاد هست توان و فرصت این کار را ندارم که همه آنها را بررسی کنم. ممکن است خطا بخاطر حجم بالای file باشد?????
$html = file_get_html('file.html');
foreach ( $html->find('line') as $value ) {
}
وقتی می خواهد file اصلی را پردازش کند خطای زیر را می دهد.
Fatal error: Call to a member function find() on a non-object...
این نمونه از متن فایل است:
<line><isbn>072160241X</isbn><isbn>9780721602417</isbn></line>
<line><isbn>1859962505</isbn><isbn>9781859962503</isbn><isbn>9780585400693</isbn></line>
<line><isbn>0470848723</isbn><isbn>9780470848722</isbn><isbn>9780470094099</isbn></line>
<line><isbn>9780060765316</isbn><isbn>0060765313</isbn></line>
-
من حدس می زنم مشکل از فایل اصلی باشه و تگهای htmlش یه جا مشکل داره.
با برنامه ها یا سرویس های html validator چک کنید ببینید فایل اصلی سالمه یا نه.
-
همچنین مقدار memory_limit رو تو فایل تنظیمات php افزایش بدید مثلا ۵۱۲ مگابایت که میشه 512M
برای ویرایش:
sudo nano /etc/php5/apache2/php.ini
فایل رو با ctrl+o ذخیره کنید و:
sudo service apache2 restart
-
من حدس می زنم مشکل از فایل اصلی باشه و تگهای htmlش یه جا مشکل داره.
با برنامه ها یا سرویس های html validator چک کنید ببینید فایل اصلی سالمه یا نه.
ممنون
ممکن هست یک نمونه کوچک و ساده مثال بزنید؟
توی لینوکس چه برنامه هایی برای این کار هست؟ توی چند سایت html validator تلاش کردم جواب نگرفتم
ممنون
-
تو لینوکس نمی دونم چه برنامه هایی هست ولی با php باید بشه این کارو کرد کافیه تابع مورد نظر رو سرچ کنید.
البته فکر کنم با خود مرورگر هم میشه این کارو کرد کافیه بعد لود کردن فایل تو قسمت developer tools دنبال console یا همچین چیزی بگردید، اونجا اصولا باید خطای های فایل رو نوشته باشه. در کل اگه با همین developer tools ور برید فکر کنم به نتیجه برسید. اگه نشد هم حتما افزونه ای برای این کار هست.
-
توی تنظیمات PHP بزنید که تمامی Errorها و Warningها رو نشون بده و بهتون نشون میده چرا درست کار نمیکنه.
-
سلام
خب من هم این خط ها
display_errors = On
error_reporting = E_ALL
را فعال کردم یعنی semicolon را در php.ini برداشتم. که اخطارهای زیادی هم نمایش داد. اما اکنون وقتی این دستورها را مینویسم که file را می گیرد و میخواهد آن را پردازش کند
$path = 'isbn.html';
$html = file_get_html($path);
foreach ( $html->find('line') as $value ) {
....}
فقط میگوید:
Fatal error: Call to a member function find() on a non-object
-
فایلی که دارید رو یک جایی آپلود کنید و من میتونم تستش کنم ببینم مشکل چیه.