First thing you need to understand is that time is an integer value. You can't do things every 15.45 or 13.63 milliseconds. Every 13 or 15, yes.
Something like this should work:
unsigned long lastMove = millis();
unsigned long lastPull = millis();
unsigned long moveInterval = 15;
unsigned long pullInterval = 13;
int movePos = 0;
int pullPos = 0;
while(pullPos < 110 || movePos < 110)
{
unsigned long now = millis();
if(now - lastMove > moveInterval)
{
movePos++;
servoM.write(movePos);
lastMove = now;
}
if(now - lastPull > pullInterval)
{
pullPos++;
servoP.write(pullPos);
lastPull = now;
}
}
You can make the 110 constants variables, and you can compute, rather than hard-code, the intervals, to increase the flexibility of the program.