My primary language is PHP, but I have done some (not very much) programming in other languages.

I've written 2 modules for Apache in C.
I wrote them in C because this was one of the things where performance did matter. (generating projected maps of the world on the fly and output to .png).

These modules work, and that's as far as I can guarantee the quality of the code.
Don't get me wrong, I did my best to write correct code, but I'm sure it has a lot of room for improvement.

I'm playing around with the thought of changing the current modules to be threaded but have no experience with threaded software and thing like chasing down bugs still take me a lot of time.

**my question is:**  

Should I first learn to properly program in C (get a copy [The C Programming Language](https://stackoverflow.com/questions/457129/where-to-start-self-learning-c-or-should-i-learn-i-learn-a-different-language/457137#457137)) or do you recommend another approach. 

note:  

I've currently no plans for using C other that for Apache modules