Batching an import [solved]

Not for 'how-to' coding questions but PHP theory instead, this forum is here for those of us who wish to learn about design aspects of programming with PHP.

Moderator: General Moderators

alex.barylski
DevNet Evangelist
Posts: 6267
Joined: Tue Dec 21, 2004 5:00 pm
Location: Winnipeg

Re: Batching an import

Post by alex.barylski »

Can you put an example of you use DISTINCT w/ this technique
Just add a DISTINCT to the SELECT query, but this makes every field get tested for duplicates (as far as I am aware). So if the SELECT returned something like:

Code: Select all

SELECT DISTINCT pkid, fkid, fname, lname, age

Code: Select all

0, 1, 'Alex', 'Barylski', 31
0, 1, 'Alex', 'Barylski', 31
Note: The first field is ZERO as primary key because I assume the field is auto-increment, passing ZERO is just a placeholder.

Only one of the above records would be returned and INSERTed into the table. If you need to remove duplicates based on specific criteria, you could use a GROUP BY and explicitly state which fields are checked.

Code: Select all

SELECT 
  pkid,
  fkid,
  fname,
  lname,
  age
FROM
  table(s)
GROUP BY
  fname, lname
This is how I would base duplicate checks but only on fname and lname.

Cheers,
Alex
User avatar
VladSun
DevNet Master
Posts: 4313
Joined: Wed Jun 27, 2007 9:44 am
Location: Sofia, Bulgaria

Re: Batching an import

Post by VladSun »

PCSpectra wrote:Just add a DISTINCT to the SELECT query, but this makes every field get tested for duplicates (as far as I am aware). So if the SELECT returned something like:

Code: Select all

SELECT DISTINCT pkid, fkid, fname, lname, age
Just to clear it - it will test for duplicate combinations of these fields. I.e.
[text]0, 1, 'Alex', 'Barylski', 31
0, 1, 'Alex', 'Barylski', 31[/text]
will produce only one record, but
[text]0, 1, 'Alex', 'Barylski', 31
0, 2, 'Alex', 'Barylski', 31[/text]
will produce two records.
There are 10 types of people in this world, those who understand binary and those who don't
josh
DevNet Master
Posts: 4872
Joined: Wed Feb 11, 2004 3:23 pm
Location: Palm beach, Florida

Re: Batching an import

Post by josh »

VladSun wrote: I've been even thinking about NN solutions!?!
What's this?
josh
DevNet Master
Posts: 4872
Joined: Wed Feb 11, 2004 3:23 pm
Location: Palm beach, Florida

Re: Batching an import

Post by josh »

VladSun wrote:How about using an IFRAME together with ignore_user_abort()/set_time_limit(0)? Something like putting the process in background.
You guys seen wildfire? For example I can inject a Zend_Log instance into this import object, and configure it to use wildfire. Then my clients can use firebug's console to view import status. I could just as easily have it log to .txt by re-configuring Zend_log - thought I'd share

http://framework.zend.com/manual/en/zen ... apter.html
User avatar
VladSun
DevNet Master
Posts: 4313
Joined: Wed Jun 27, 2007 9:44 am
Location: Sofia, Bulgaria

Re: Batching an import

Post by VladSun »

josh wrote:
VladSun wrote: I've been even thinking about NN solutions!?!
What's this?
I meant Neural network solutions. Because of the variety of the input data formats it's very hard to predict and implement all the parsing rules it might be needed by using a hard-coded logic. That's why I thought a NN solution might be the one I needed. Never tried to implement it though.
There are 10 types of people in this world, those who understand binary and those who don't
User avatar
VladSun
DevNet Master
Posts: 4313
Joined: Wed Jun 27, 2007 9:44 am
Location: Sofia, Bulgaria

Re: Batching an import

Post by VladSun »

josh wrote:
VladSun wrote:How about using an IFRAME together with ignore_user_abort()/set_time_limit(0)? Something like putting the process in background.
You guys seen wildfire? For example I can inject a Zend_Log instance into this import object, and configure it to use wildfire. Then my clients can use firebug's console to view import status. I could just as easily have it log to .txt by re-configuring Zend_log - thought I'd share

http://framework.zend.com/manual/en/zen ... apter.html
Never heard of it, but it sounds like you need a solution similar to the progress bar for uploading a file - there are a lot of such code in the net and they do not require a 3rd party software install in the browser.
There are 10 types of people in this world, those who understand binary and those who don't
sike
Forum Commoner
Posts: 84
Joined: Wed Aug 02, 2006 8:33 am

Re: Batching an import

Post by sike »

I would take the LOAD DATA route. I expect it to be the fastest thing you can do to import your data.
As soon as you have your data in a temp table you get the benefit to process all items at once.
E.g. your hierarchical problem should be solvable with 2 queries for each relationship. Something like (pseudo sql)
"INSERT INTO makers SELECT DISTINCT maker FROM imported" to insert all new makers in your makers table and afterwards
a simple "UPDATE imported SET maker_id = makers.id WHERE imported.maker = makers.name" will suffice to wire your imported
items to the makers table.... repeating this for all relations and you are mostly done.
I guess this will outperform the pure php version by a huge margin.

cheers
Chris
User avatar
VladSun
DevNet Master
Posts: 4313
Joined: Wed Jun 27, 2007 9:44 am
Location: Sofia, Bulgaria

Re: Batching an import

Post by VladSun »

Well, all of the proposed solutions suppose that the input data is well formatted and properly CSV delimited. I've noticed it's rarely the case that's why I think there has to be some pre/post processing of this data - both in PHP and DB code domain.
There are 10 types of people in this world, those who understand binary and those who don't
josh
DevNet Master
Posts: 4872
Joined: Wed Feb 11, 2004 3:23 pm
Location: Palm beach, Florida

Re: Batching an import

Post by josh »

Well yeah, I'm not in the domain of CSV file repair, so one of my givens is that the file will be a valid CSV. And I'm using Luke's CSV abstraction. A lot of my imports aren't just the make, model, year - but also importing attributes about those make model years - and those attributes are used to derive the fitments. So there might be only 40,000 vehicles and 10,000 product - but both entities have a tire size and another algorithm runs and finds, lets say 1 Million matches between the tables & creates them. Right now this kind of stuff happens in my PHP code too, I'm going to have to optimize it all. I'll see what I can do. Part of the requirement is to track how many Makes, Models, and Years were inserted -all separately - so I doubt two queries is a realistic goal. But maybe < 50 queries is a good goal.

Edit: oh - 2 queries _per relationship_ got it.
josh
DevNet Master
Posts: 4872
Joined: Wed Feb 11, 2004 3:23 pm
Location: Palm beach, Florida

Re: Batching an import

Post by josh »

Ok I made my tests pass with the previously mentioned strategy, so it hits everything in 10-20 queries even if there is 100s or rows. However when I load a benchmark (180,000 rows) I get Mysql Server has gone away, after only 100 or 200 seconds. interactive_timeout and wait_timeout are both confirmed to be set to 28,800

However with only a 10,000 row test, it loads in about 2 minutes. What do you think is causing the error? I'd love to ship the software with the improvements, but not if this issue is going to be encountered on a properly configured server...

# UPDATE elite_import i, elite_make l SET i.make_id = l.id WHERE l.title = i.make

elite_import has no indexes yet...
User avatar
VladSun
DevNet Master
Posts: 4313
Joined: Wed Jun 27, 2007 9:44 am
Location: Sofia, Bulgaria

Re: Batching an import

Post by VladSun »

I was just about to say you should create all indexes for your CSV imported table, before processing it.
There are 10 types of people in this world, those who understand binary and those who don't
josh
DevNet Master
Posts: 4872
Joined: Wed Feb 11, 2004 3:23 pm
Location: Palm beach, Florida

Re: Batching an import

Post by josh »

I'm trying that now. Do you think its simply the lack of the index causes an error? Because if I add the index - and lets say it speeds things up by a factor of N - and then I just increase the dataset by a factor of N - am I back at square one? Going to try and get some benchmarks

Ok - same problem - dead after 60 seconds exactly (with indexes) - what to do? Documentation tells you it happens if you try to insert/update too many rows... is it supposed to be a guessing game as to what the limits are on mysql?
User avatar
Weirdan
Moderator
Posts: 5978
Joined: Mon Nov 03, 2003 6:13 pm
Location: Odessa, Ukraine

Re: Batching an import

Post by Weirdan »

josh wrote:Ok - same problem - dead after 60 seconds exactly (with indexes) - what to do? Documentation tells you it happens if you try to insert/update too many rows... is it supposed to be a guessing game as to what the limits are on mysql?
Are you trying to populate the initial table with a single enormous insert/replace? If so you could have hit the packet size limit. You may try to read the limit value before the query and split the insert into several queries so that each query fits into the allowed packet size:

Code: Select all


    public function getMaxAllowedPacket()
    {
        return (int) ($this->query("select @@max_allowed_packet", PDO::FETCH_COLUMN, 0)->fetch());
    }

josh
DevNet Master
Posts: 4872
Joined: Wed Feb 11, 2004 3:23 pm
Location: Palm beach, Florida

Re: Batching an import

Post by josh »

I changed max_allowed_packet from 1M to 1000M and verified it. Query still dies after 60 seconds exactly. I tried to do a big select, and loop over it issuing small UPDATEs - the select itself still dies after 60-70-ish seconds.

Code: Select all

mysql> show variables;
+-----------------------------------------+-------------------------------------------------------------------------------------------+
| Variable_name                           | Value                                                                                     |
+-----------------------------------------+-------------------------------------------------------------------------------------------+
| auto_increment_increment                | 1                                                                                         |
| auto_increment_offset                   | 1                                                                                         |
| autocommit                              | ON                                                                                        |
| automatic_sp_privileges                 | ON                                                                                        |
| back_log                                | 50                                                                                        |
| basedir                                 | c:\wamp\bin\mysql\mysql5.1.36\                                                            |
| big_tables                              | OFF                                                                                       |
| binlog_cache_size                       | 32768                                                                                     |
| binlog_format                           | MIXED                                                                                     |
| bulk_insert_buffer_size                 | 8388608                                                                                   |
| character_set_client                    | latin1                                                                                    |
| character_set_connection                | latin1                                                                                    |
| character_set_database                  | latin1                                                                                    |
| character_set_filesystem                | binary                                                                                    |
| character_set_results                   | latin1                                                                                    |
| character_set_server                    | latin1                                                                                    |
| character_set_system                    | utf8                                                                                      |
| character_sets_dir                      | c:\wamp\bin\mysql\mysql5.1.36\share\charsets\                                             |
| collation_connection                    | latin1_swedish_ci                                                                         |
| collation_database                      | latin1_swedish_ci                                                                         |
| collation_server                        | latin1_swedish_ci                                                                         |
| completion_type                         | 0                                                                                         |
| concurrent_insert                       | 1                                                                                         |
| connect_timeout                         | 10                                                                                        |
| datadir                                 | c:\wamp\bin\mysql\mysql5.1.36\data\                                                       |
| date_format                             | %Y-%m-%d                                                                                  |
| datetime_format                         | %Y-%m-%d %H:%i:%s                                                                         |
| default_week_format                     | 0                                                                                         |
| delay_key_write                         | ON                                                                                        |
| delayed_insert_limit                    | 100                                                                                       |
| delayed_insert_timeout                  | 300                                                                                       |
| delayed_queue_size                      | 1000                                                                                      |
| div_precision_increment                 | 4                                                                                         |
| engine_condition_pushdown               | ON                                                                                        |
| error_count                             | 0                                                                                         |
| event_scheduler                         | OFF                                                                                       |
| expire_logs_days                        | 0                                                                                         |
| flush                                   | OFF                                                                                       |
| flush_time                              | 1800                                                                                      |
| foreign_key_checks                      | ON                                                                                        |
| ft_boolean_syntax                       | + -><()~*:""&|                                                                            |
| ft_max_word_len                         | 84                                                                                        |
| ft_min_word_len                         | 4                                                                                         |
| ft_query_expansion_limit                | 20                                                                                        |
| ft_stopword_file                        | (built-in)                                                                                |
| general_log                             | OFF                                                                                       |
| general_log_file                        | c:\wamp\bin\mysql\mysql5.1.36\data\computer_1.log                                         |
| group_concat_max_len                    | 1024                                                                                      |
| have_community_features                 | YES                                                                                       |
| have_compress                           | YES                                                                                       |
| have_crypt                              | NO                                                                                        |
| have_csv                                | YES                                                                                       |
| have_dynamic_loading                    | YES                                                                                       |
| have_geometry                           | YES                                                                                       |
| have_innodb                             | YES                                                                                       |
| have_ndbcluster                         | NO                                                                                        |
| have_openssl                            | DISABLED                                                                                  |
| have_partitioning                       | YES                                                                                       |
| have_query_cache                        | YES                                                                                       |
| have_rtree_keys                         | YES                                                                                       |
| have_ssl                                | DISABLED                                                                                  |
| have_symlink                            | YES                                                                                       |
| hostname                                | computer_1                                                                                |
| identity                                | 0                                                                                         |
| ignore_builtin_innodb                   | OFF                                                                                       |
| init_connect                            |                                                                                           |
| init_file                               |                                                                                           |
| init_slave                              |                                                                                           |
| innodb_adaptive_hash_index              | ON                                                                                        |
| innodb_additional_mem_pool_size         | 1048576                                                                                   |
| innodb_autoextend_increment             | 8                                                                                         |
| innodb_autoinc_lock_mode                | 1                                                                                         |
| innodb_buffer_pool_size                 | 8388608                                                                                   |
| innodb_checksums                        | ON                                                                                        |
| innodb_commit_concurrency               | 0                                                                                         |
| innodb_concurrency_tickets              | 500                                                                                       |
| innodb_data_file_path                   | ibdata1:10M:autoextend                                                                    |
| innodb_data_home_dir                    |                                                                                           |
| innodb_doublewrite                      | ON                                                                                        |
| innodb_fast_shutdown                    | 1                                                                                         |
| innodb_file_io_threads                  | 4                                                                                         |
| innodb_file_per_table                   | OFF                                                                                       |
| innodb_flush_log_at_trx_commit          | 1                                                                                         |
| innodb_flush_method                     |                                                                                           |
| innodb_force_recovery                   | 0                                                                                         |
| innodb_lock_wait_timeout                | 50                                                                                        |
| innodb_locks_unsafe_for_binlog          | OFF                                                                                       |
| innodb_log_buffer_size                  | 1048576                                                                                   |
| innodb_log_file_size                    | 5242880                                                                                   |
| innodb_log_files_in_group               | 2                                                                                         |
| innodb_log_group_home_dir               | .\                                                                                        |
| innodb_max_dirty_pages_pct              | 90                                                                                        |
| innodb_max_purge_lag                    | 0                                                                                         |
| innodb_mirrored_log_groups              | 1                                                                                         |
| innodb_open_files                       | 300                                                                                       |
| innodb_rollback_on_timeout              | OFF                                                                                       |
| innodb_stats_on_metadata                | ON                                                                                        |
| innodb_support_xa                       | ON                                                                                        |
| innodb_sync_spin_loops                  | 20                                                                                        |
| innodb_table_locks                      | ON                                                                                        |
| innodb_thread_concurrency               | 8                                                                                         |
| innodb_thread_sleep_delay               | 10000                                                                                     |
| innodb_use_legacy_cardinality_algorithm | ON                                                                                        |
| insert_id                               | 0                                                                                         |
| interactive_timeout                     | 28800                                                                                     |
| join_buffer_size                        | 131072                                                                                    |
| keep_files_on_create                    | OFF                                                                                       |
| key_buffer_size                         | 16777216                                                                                  |
| key_cache_age_threshold                 | 300                                                                                       |
| key_cache_block_size                    | 1024                                                                                      |
| key_cache_division_limit                | 100                                                                                       |
| language                                | c:\wamp\bin\mysql\mysql5.1.36\share\english\                                              |
| large_files_support                     | ON                                                                                        |
| large_page_size                         | 0                                                                                         |
| large_pages                             | OFF                                                                                       |
| last_insert_id                          | 0                                                                                         |
| lc_time_names                           | en_US                                                                                     |
| license                                 | GPL                                                                                       |
| local_infile                            | ON                                                                                        |
| log                                     | OFF                                                                                       |
| log_bin                                 | ON                                                                                        |
| log_bin_trust_function_creators         | OFF                                                                                       |
| log_bin_trust_routine_creators          | OFF                                                                                       |
| log_error                               | c:\wamp\logs\mysql.log                                                                    |
| log_output                              | FILE                                                                                      |
| log_queries_not_using_indexes           | OFF                                                                                       |
| log_slave_updates                       | OFF                                                                                       |
| log_slow_queries                        | OFF                                                                                       |
| log_warnings                            | 1                                                                                         |
| long_query_time                         | 10.000000                                                                                 |
| low_priority_updates                    | OFF                                                                                       |
| lower_case_file_system                  | ON                                                                                        |
| lower_case_table_names                  | 1                                                                                         |
| max_allowed_packet                      | 1048576000                                                                                |
| max_binlog_cache_size                   | 4294963200                                                                                |
| max_binlog_size                         | 1073741824                                                                                |
| max_connect_errors                      | 10                                                                                        |
| max_connections                         | 151                                                                                       |
| max_delayed_threads                     | 20                                                                                        |
| max_error_count                         | 64                                                                                        |
| max_heap_table_size                     | 16777216                                                                                  |
| max_insert_delayed_threads              | 20                                                                                        |
| max_join_size                           | 18446744073709551615                                                                      |
| max_length_for_sort_data                | 1024                                                                                      |
| max_prepared_stmt_count                 | 16382                                                                                     |
| max_relay_log_size                      | 0                                                                                         |
| max_seeks_for_key                       | 4294967295                                                                                |
| max_sort_length                         | 1024                                                                                      |
| max_sp_recursion_depth                  | 0                                                                                         |
| max_tmp_tables                          | 32                                                                                        |
| max_user_connections                    | 0                                                                                         |
| max_write_lock_count                    | 4294967295                                                                                |
| min_examined_row_limit                  | 0                                                                                         |
| multi_range_count                       | 256                                                                                       |
| myisam_data_pointer_size                | 6                                                                                         |
| myisam_max_sort_file_size               | 2146435072                                                                                |
| myisam_recover_options                  | OFF                                                                                       |
| myisam_repair_threads                   | 1                                                                                         |
| myisam_sort_buffer_size                 | 8388608                                                                                   |
| myisam_stats_method                     | nulls_unequal                                                                             |
| myisam_use_mmap                         | OFF                                                                                       |
| named_pipe                              | OFF                                                                                       |
| net_buffer_length                       | 8192                                                                                      |
| net_read_timeout                        | 30                                                                                        |
| net_retry_count                         | 10                                                                                        |
| net_write_timeout                       | 60                                                                                        |
| new                                     | OFF                                                                                       |
| old                                     | OFF                                                                                       |
| old_alter_table                         | OFF                                                                                       |
| old_passwords                           | OFF                                                                                       |
| open_files_limit                        | 755                                                                                       |
| optimizer_prune_level                   | 1                                                                                         |
| optimizer_search_depth                  | 62                                                                                        |
| optimizer_switch                        | index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on |
| pid_file                                | c:\wamp\bin\mysql\mysql5.1.36\data\computer_1.pid                                         |
| plugin_dir                              | c:\wamp\bin\mysql\mysql5.1.36\lib/plugin                                                  |
| port                                    | 3306                                                                                      |
| preload_buffer_size                     | 32768                                                                                     |
| profiling                               | OFF                                                                                       |
| profiling_history_size                  | 15                                                                                        |
| protocol_version                        | 10                                                                                        |
| pseudo_thread_id                        | 7                                                                                         |
| query_alloc_block_size                  | 8192                                                                                      |
| query_cache_limit                       | 1048576                                                                                   |
| query_cache_min_res_unit                | 4096                                                                                      |
| query_cache_size                        | 0                                                                                         |
| query_cache_type                        | ON                                                                                        |
| query_cache_wlock_invalidate            | OFF                                                                                       |
| query_prealloc_size                     | 8192                                                                                      |
| rand_seed1                              |                                                                                           |
| rand_seed2                              |                                                                                           |
| range_alloc_block_size                  | 4096                                                                                      |
| read_buffer_size                        | 262144                                                                                    |
| read_only                               | OFF                                                                                       |
| read_rnd_buffer_size                    | 524288                                                                                    |
| relay_log                               |                                                                                           |
| relay_log_index                         |                                                                                           |
| relay_log_info_file                     | relay-log.info                                                                            |
| relay_log_purge                         | ON                                                                                        |
| relay_log_space_limit                   | 0                                                                                         |
| report_host                             |                                                                                           |
| report_password                         |                                                                                           |
| report_port                             | 3306                                                                                      |
| report_user                             |                                                                                           |
| rpl_recovery_rank                       | 0                                                                                         |
| secure_auth                             | OFF                                                                                       |
| secure_file_priv                        |                                                                                           |
| server_id                               | 1                                                                                         |
| shared_memory                           | OFF                                                                                       |
| shared_memory_base_name                 | MYSQL                                                                                     |
| skip_external_locking                   | ON                                                                                        |
| skip_networking                         | OFF                                                                                       |
| skip_show_database                      | OFF                                                                                       |
| slave_compressed_protocol               | OFF                                                                                       |
| slave_exec_mode                         | STRICT                                                                                    |
| slave_load_tmpdir                       | C:\WINDOWS\TEMP                                                                           |
| slave_net_timeout                       | 3600                                                                                      |
| slave_skip_errors                       | OFF                                                                                       |
| slave_transaction_retries               | 10                                                                                        |
| slow_launch_time                        | 2                                                                                         |
| slow_query_log                          | OFF                                                                                       |
| slow_query_log_file                     | c:\wamp\bin\mysql\mysql5.1.36\data\computer_1-slow.log                                    |
| sort_buffer_size                        | 524288                                                                                    |
| sql_auto_is_null                        | ON                                                                                        |
| sql_big_selects                         | ON                                                                                        |
| sql_big_tables                          | OFF                                                                                       |
| sql_buffer_result                       | OFF                                                                                       |
| sql_log_bin                             | ON                                                                                        |
| sql_log_off                             | OFF                                                                                       |
| sql_log_update                          | ON                                                                                        |
| sql_low_priority_updates                | OFF                                                                                       |
| sql_max_join_size                       | 18446744073709551615                                                                      |
| sql_mode                                |                                                                                           |
| sql_notes                               | ON                                                                                        |
| sql_quote_show_create                   | ON                                                                                        |
| sql_safe_updates                        | OFF                                                                                       |
| sql_select_limit                        | 18446744073709551615                                                                      |
| sql_slave_skip_counter                  |                                                                                           |
| sql_warnings                            | OFF                                                                                       |
| ssl_ca                                  |                                                                                           |
| ssl_capath                              |                                                                                           |
| ssl_cert                                |                                                                                           |
| ssl_cipher                              |                                                                                           |
| ssl_key                                 |                                                                                           |
| storage_engine                          | MyISAM                                                                                    |
| sync_binlog                             | 0                                                                                         |
| sync_frm                                | ON                                                                                        |
| system_time_zone                        | Eastern Daylight Time                                                                     |
| table_definition_cache                  | 256                                                                                       |
| table_lock_wait_timeout                 | 50                                                                                        |
| table_open_cache                        | 64                                                                                        |
| table_type                              | MyISAM                                                                                    |
| thread_cache_size                       | 0                                                                                         |
| thread_handling                         | one-thread-per-connection                                                                 |
| thread_stack                            | 196608                                                                                    |
| time_format                             | %H:%i:%s                                                                                  |
| time_zone                               | SYSTEM                                                                                    |
| timed_mutexes                           | OFF                                                                                       |
| timestamp                               | 1285322852                                                                                |
| tmp_table_size                          | 16777216                                                                                  |
| tmpdir                                  | C:\WINDOWS\TEMP                                                                           |
| transaction_alloc_block_size            | 8192                                                                                      |
| transaction_prealloc_size               | 4096                                                                                      |
| tx_isolation                            | REPEATABLE-READ                                                                           |
| unique_checks                           | ON                                                                                        |
| updatable_views_with_limit              | YES                                                                                       |
| version                                 | 5.1.36-community-log                                                                      |
| version_comment                         | MySQL Community Server (GPL)                                                              |
| version_compile_machine                 | ia32                                                                                      |
| version_compile_os                      | Win32                                                                                     |
| wait_timeout                            | 28800                                                                                     |
| warning_count                           | 0                                                                                         |
+-----------------------------------------+-------------------------------------------------------------------------------------------+
272 rows in set (0.00 sec)

User avatar
VladSun
DevNet Master
Posts: 4313
Joined: Wed Jun 27, 2007 9:44 am
Location: Sofia, Bulgaria

Re: Batching an import

Post by VladSun »

What table engine do you use - MyISAM or InnoDB? I would recommend using the InnoDB engine.

PS: What do you have in your error logs?
There are 10 types of people in this world, those who understand binary and those who don't
Post Reply