Dear Madam or Sir,
I have great experience with Amazon PA API and have done a similar task in past in Python (with Pyspark) and Scala with Spark.
Using Python or Scala has many benefits over PHP. Its faster, is easier to maintain, allows more fault tolerant programming (you dont want to start from the beginning when getting 20000 products ) and allows scaling, i.e. increasing the number of SKUs - especially with Spark - very easily.
Please bear in mind that Amazon limits its API usage to 1 request per second. However, one can make 10 request simultaneously. Therefore, 20000 products take 2000 seconds, which are about 30 minutes.
Am I correct that the SKUs are stored in a relational database like MySQL or MS SQL Server? Should the results (competitor name, ... ) be stored in the database as well?
Getting the prices from the cheapest 10 (I am not sure about the exact number) competitors is easy and can be done in one request, since its just a parameter in the API. Getting the prices of all competitors requires paging and thus multiple requests. While this is possible, it increases the complexity, especially to make it fault tolerant. Do you need all competitors or just the cheapest 10 competitors?
Please bear in mind that Python can be run as easy as PHP on many servers and will outperform PHP in efficiency and maintainability, since Python the the right language for data processing.
Best regards