The "XMLSERVICE programmer" advice from Allen is correct ...
1) ... end XMLSERVICE jobs and start with fresh/new job after recompiling called programs
2) ... or use XMLSERVICE stateless, so that you get a new/pool job for each php script duration
Bug? Well no ... caching XMLSERVICE "load/activate" is only way to achieve "high speed recalls" due to relatively slow IBM i program "activation costs" (want more see activation ...
http://www.itjungle.com/fhg/fhg021104-story01.html). BTW -- if you are not shaking in fear at mention of IBM i activation group concept, you are IBM i superman and do not need this forum.
... long story short, when any called program is XMLSERVICE "load/activated" within private connection job (/tmp/packers) it will stay "load/activated" in current compile image state until XMLSERVICE job ends, because old compile image reference counted by IBM i until all activations end (new XMLSERVICE job will get new compile image).
Bottom line ... to avoid a long complex trip down activate/remove logic ... cough ... it was better to design XMLSERVICE for production w/cache and let "high paid" IBM i programmers earn their money with obvious IBM i talent (long live activation groups).