Sphider – PDO vs MySQLi

There are TWO editions of Sphider… the classic edition using MySQLi and the PDO edition.

Why are there two versions? The classic edition uses MySQLi and prepared statements. While MySQLi, by itself, does support prepared statements, there are a couple functions used in Sphider that require MySQLnd (the “nd” stands for “native driver”). These functions are used because they are the most efficient way of doing things.

MySQLnd has been the default driver since PHP 5.4. If you install a modern version of PHP and want MySQLi, you are going to get MySQLnd. Yet SOME hosting companies DISABLE MySQLnd for those using shared hosting. (I suppose they want people to shell out a few more bucks to get VPS or Dedicated hosting.) In those situations, the classic edition just ain’t gonna work! So, there is the PDO edition.

There are those who will tell you that PDO is what you should be using anyway. They will tout how versatile PDO is, how it can do anything MySQLi can do, only better. It is true the PDO IS versatile. It can work with many different databases, not just MySQL. But there ARE some things PDO just can’t do, at least not efficiently. And there is overhead. And memory requirements.

With PDO:              PHP <==> PDO <==> Your data
With MySQLi:       PHP <==> Your data

The classic version of Sphider is the better, more capable edition! The PDO edition is capable enough PROVIDED you aren’t trying to build your personal version of an internet search engine. It IS possible to tax the PDO edition to the point it chokes. (It is probably possible to choke the classic edition as well, but it takes more effort.)

Remember, the intent of Sphider was/is to index a web site for the benefit of that site’s visitors. In can be used to index a number of related sites for the same purpose. An individual may stretch Sphider for personal use to index MANY sites… but it is STILL just a small indexing tool and not a Google replacement!

NOW… the final point. If you REALLY need Sphider to stretch its capabilities to the absolute limit, maybe you should be using the classic edition and not PDO. If that is the case, shell out a couple extra bucks to your host so you can get access to MySQLnd. Don’t try to pull a 20′ travel trailer with a Honda Civic.

WorldSpaceFlight code changes

The WorldSpaceFlight pages dealing with the various flights (US, Russia, China) have undergone a behind-the-scenes update. A new class was introduced which eliminates a lot of code duplication and makes maintenance easier. Of course, this means a number of modules had to be changed to accommodate the new class structure. I might have missed something. If you notice anything “funky” about a particular page, please let me know so I can fix it. This can be something like weird characters, misplaced text, missing data, inappropriate data like a number where text is expected, or some kind of error message.

Just when you thought you could go back in the water…

Well, it seems the Sphider Forum wasn’t fixed after all. Superficially it looked okay. You could log on and see what topics there were. But you couldn’t actually view any of the posts to the topics, or create a new topic. So a rebuild is being undertaken, since the repair didn’t work. I really hope the uploaded data is safe. Apologies to anyone wanting to use the forum.

Holiday VPS woes

On Sunday morning, December 23, one of the worst nightmares of a web host came true. A VPS server suffered a hardware failure. The hardware was repaired quickly enough, but restoration of the VPS server was another matter.  The nightmares of the web host begat the nightmare of a webmaster. All four of the worldspaceflight sites went down. As restoration by the web host proceeded, worldspaceflight.com and sphider.worldspaceflight.com were functioning again Monday afternoon. Blog.worldspaceflight.com and forum.worldspaceflight.com were not so fortunate. There really wasn’t much that could be done until the VPS server restore was completed. For the uninitiated, restoring a VPS server is nowhere as simple of just copying a bunch of files back. IF ONLY! That restore was FINALLY completed Friday evening. Then it was discovered that the blog and forum were STILL not working. It turns out that for the blog (this site), there was a simple permissions problems which was quickly fixed. Three down, one to go. The forum is being stubborn. First, and entire cache directory (with needed driver files) was devoid of content. I THINK that is fixed, but now there may be ANOTHER permissions problem. We are working to resolve that. No guarantee there won’t be something else next, but hope springs eternal. The forum WILL be back.

Yeah, it has been fun, but PLEASE, let’s not EVER do this again!

Securing your Sphider

You may have read before that I have suggested securing the Sphider admin directory with password protection. After all, you don’t want to take a chance of someone else gaining access and changing all of your settings… or worse!

But Sphider has a number of other directories within it. What about those? Well, MOST of them can also be password protected. The rule is, if files in the directory only need to be accessed by PHP, it can be password protected. If any file in a directory needs to be accessed by a web browser, it shouldn’t be password protected. For example, the templates directory should not be password protected. It contains css files, which the browser needs to display search forms and results properly. Js_suggest should not be password protected, It contains javascript which the browser needs to access. The tmp directory (not the one in admin) should not be password protected as the browser needs to be able to read and write there. Other than that, go ahead and add password protection.

Oh! One more thing. Add SSL. That is something that at one time was expensive and primarily used by sites like businesses with checkout pages and such. Today, SSL in some cases can be free. DreamHost offers “Let’s Encrypt SSL” for free. Then there are self-signed certificates, also free (but not as trustworthy). The advantage of SSL is that when you do need to enter user name/password to one of your password protected directories, it can’t be intercepted.

Typo in Sphider 2.2 install script

A typo has been discovered in ‘install.php’ for Sphider 2.2.0 (classic). This will affect those who have 1) already downloaded ‘sphider-2.2.0.zip’, and 2) are trying to do a clean install. Any downloads after right now already have the file corrected.

This does not warrant a new release, but simply instructions on how to fix the problem if you have it.

Line 23 currently has:

error_reporting(E_ALL0../settings”;

Change this to:

error_reporting(0);
$settings_dir = “../settings”;

This does NOT affect the PDO edition.

Sphider 2.2.0 released

Sphider 2.2.0 was released today in both the Classic and PDO editions.

There are currently no plans to release this update in PostgreSQL or SQLite editions. Those remain at 2.1.0. There seems to be little demand for these.

Sphider 2.2.0 has the search interface redesigned to be more mobile friendly. The code was rewritten to be more responsive to CSS instruction, made to detect the use of mobile browsers, and present a mobile friendly version of the standard template.

A minor security problem was also addressed, as well as the ability of the administrator to easily switch between the tabbed search (traditional, RSS, and image) and just the basic traditional text search.

—————-

There are plans for the next release (February 2019 ???) to expand this ability so that the administrator can pick and choose which search interfaces to present. If they want both traditional and image, but not RSS, they will be able to do so.

Also, the templates will be reworked so mobile browsers can experience friendly versions of ALL the templates.

World Space Flight website pages

The World Space Flight pages are anything BUT mobile friendly! That is a sad fact.

The good news is that that will be changing. The changes will be gradual, a few MAJOR changes coming first, followed by more general changes. The first big change which will be rolled out will involve the menus on the left side of practically every page.

As it is, you have to enlarge the area just to read it, much less actually click on something. America in Space already has the beginning of that change on MOST of the pages.

Once the menus have been adapted, then there will follow changes in the content layout. Be patient. Things will be getting better.

Sphider 2.2 is in the works

The subject(s) has come up recently about the use of html tables, css, and mobile browsers.

Looking at the Sphider search pages, there is room for improvement. So work has begun to alter the code to do away with html tables and expand the use of css. The result is that the appearance of the search page layouts using css is nearly identical to look using html tables.

The kick is, it makes it easier to customize the look from template to template. Even a new template has come about. Named “mobile”, it is much easier to see/use on a mobile device. The search page will also detect the use of a mobile and force the mobile template even when it is not the template set in the configuration and seen by anyone NOT on a mobile.

The changes have already been made and will now undergo a period of testing. Most likely, Sphider classic will see the new version first, with PDO a short time later. If this will also carry over to the PostgreSQL and SQLite variation has not yet been decided.

Core functionality will have no change. This new release will be for benefit of the user’s clients, the people who actually use the search feature.

*****************************************

To get an idea how the mobile template will work, first visit
https://www.worldspaceflight.com/sphider/search.php
with a desktop or laptop. Then visit the same link with a mobile device.

Feedback appreciated.

Sphider 2.1 released

It was found that all variations of Sphider 2.0.* had a flaw in the search capability. While earlier versions allowed wild card searches (*), or not contained searches (-), this ability was inadvertently blocked in 2.0! It seems the work to improve security and block undesirable searches went too far!

This is resolved in all variations of 2.1 – Classic, PDO, PostgreSQL, and SQLite.